为什么数组中有不符合条件的依旧通过验证

来源:4-4 Shiro过滤器

黑色的白兔

2019-02-22 16:55

roles中只有“admin”,而rolesOr[“admin”,“admin1”],每次都能通过验证?打印role也只有一个“admin”,这是为什么呢?浏览器,idea,tomcat都重启过了,缓存也清了。

写回答 关注

2回答

  • Woodo
    2019-05-09 14:33:09

    public class RolesAuthorizationFilter extends AuthorizationFilter {

        public boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) throws IOException {


            Subject subject = getSubject(request, response);

            String[] rolesArray = (String[]) mappedValue;

            if (rolesArray == null || rolesArray.length == 0) {

                //no roles specified, so nothing to check - allow access.

                return true;

            }

            Set<String> roles = CollectionUtils.asSet(rolesArray);

            return subject.hasAllRoles(roles);

        }

    }


  • zzzzzzz小盆友
    2019-03-06 09:19:04

    rolesOr这个自定义的filter就是实现满足数组参数中的任意一个角色都能通过的,过滤实现的是or的关系。而shiro自带的roles角色过滤是and的关系.

Shiro安全框架入门

从零入门Shiro安全框架

48040 学习 · 332 问题

查看课程

相似问题