Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.

点击jsp页面时Shiro报错“Wildcard string cannot be null or empty”。参考原因是在jsp中验证资源权限、遍历所有权限时,执行到Shiro源码处,有权限为null或空字符串。需仔细查找,确保权限集合中无此类情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击jsp页面时shiro报错:“Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.

30-May-2019 11:22:04.974 严重 [http-nio-8085-exec-3] org.apache.catalina.core.ApplicationDispatcher.invoke Servlet.service() for servlet [jsp] threw exception
 java.lang.IllegalArgumentException: Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
    at org.apache.shiro.authz.permission.WildcardPermission.setParts(WildcardPermission.java:155)
    at org.apache.shiro.authz.permission.WildcardPermission.<init>(WildcardPermission.java:144)
    at org.apache.shiro.authz.permission.WildcardPermission.<init>(WildcardPermission.java:140)
    at org.apache.shiro.authz.permission.WildcardPermissionResolver.resolvePermission(WildcardPermissionResolver.java:41)
    at org.apache.shiro.realm.AuthorizingRealm.resolvePermissions(AuthorizingRealm.java:434)
    at org.apache.shiro.realm.AuthorizingRealm.getPermissions(AuthorizingRealm.java:410)
    at org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:468)
    at org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:463)
    at org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:458)
    .......

参考原因:

当执行jsp中

<shiro:hasPermission name="/sysUser/add">

       验证“是否有name中的资源的权限”,对所有权限进行遍历时,当执行到shiro以下源码时,有权限为null或者空字符串,请仔细查找下,或者确保权限集合Set<String> urlSet 中无null或空字符串

if (wildcardString == null || wildcardString.isEmpty()) {
            throw new IllegalArgumentException("Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.");
}


shiro 中WildcardPermission源码部分:

protected void setParts(String wildcardString, boolean caseSensitive) {
        wildcardString = StringUtils.clean(wildcardString);

        if (wildcardString == null || wildcardString.isEmpty()) {
            throw new IllegalArgumentException("Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.");
        }

        if (!caseSensitive) {
            wildcardString = wildcardString.toLowerCase();
        }

        List<String> parts = CollectionUtils.asList(wildcardString.split(PART_DIVIDER_TOKEN));

        this.parts = new ArrayList<Set<String>>();
        for (String part : parts) {
            Set<String> subparts = CollectionUtils.asSet(part.split(SUBPART_DIVIDER_TOKEN));

            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.");
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值