Shiro报错:“通配符字符串不能为空或空。确保权限字符串被正确格式化。”

发布于 2022-09-07 03:38:02 字数 2522 浏览 34 评论 0

权限列表filterChainDefinitionMap中Debug如下:

clipboard.png

通过实现自定义filter,继承自org.apache.shiro.web.filter.AccessControlFilter

@Override
    protected boolean isAccessAllowed(ServletRequest servletRequest, ServletResponse servletResponse, Object mappedValue) throws Exception {
        log.info("PermissionAuthorizationFilter执行");
        Subject subject = getSubject(servletRequest, servletResponse);
        if(null != mappedValue){
            String[] value = (String[])mappedValue;
            for (String permission : value) {
                if(subject.isPermitted(permission)){
                    return true;
                }
            }
        }
        return false;
    }

在上述代码中执行到subject.isPermitted部分报错,Debug传入传输为:

clipboard.png

错误信息:

java.lang.IllegalArgumentException: Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.

shiro源码部分:

protected void setParts(String wildcardString, boolean caseSensitive) {
        if (wildcardString != null && wildcardString.trim().length() != 0) {
            wildcardString = wildcardString.trim();
            List<String> parts = CollectionUtils.asList(wildcardString.split(":"));
            this.parts = new ArrayList();
            Iterator i$ = parts.iterator();

            while(i$.hasNext()) {
                String part = (String)i$.next();
                Set<String> subparts = CollectionUtils.asSet(part.split(","));
                if (!caseSensitive) {
                    subparts = this.lowercase(subparts);
                }

                if (subparts.isEmpty()) {
                    throw new IllegalArgumentException("Wildcard string cannot contain parts with only dividers. Make sure permission strings are properly formatted.");
                }

                this.parts.add(subparts);
            }

            if (this.parts.isEmpty()) {
                throw new IllegalArgumentException("Wildcard string cannot contain only dividers. Make sure permission strings are properly formatted.");
            }
        } else {
            throw new IllegalArgumentException("Wildcard string cannot be null or empty. Make sure permission strings are properly formatted."); //报出此异常
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

几度春秋 2022-09-14 03:38:02

原因找到了,一直将着力点找错了,其错误的原因在获取个人权限的地方没有进行权限判断,只有在全局的权限添加进行了判断。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文