为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

正在回答

2 回答


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);

    }

}


0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信