Shiro: Wildcard string cannot be null or empty. Make sure permission strings are properly formatted., shirowildcard
This exception occurs when you access a page:
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:154)at org.apache.shiro.authz.permission.WildcardPermission.<init>(WildcardPermission.java:143)at org.apache.shiro.authz.permission.WildcardPermission.<init>(WildcardPermission.java:139)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)at org.apache.shiro.authz.ModularRealmAuthorizer.isPermitted(ModularRealmAuthorizer.java:223)at org.apache.shiro.mgt.AuthorizingSecurityManager.isPermitted(AuthorizingSecurityManager.java:113)at org.apache.shiro.subject.support.DelegatingSubject.isPermitted(DelegatingSubject.java:158)at org.apache.shiro.web.tags.PermissionTag.isPermitted(PermissionTag.java:66)at org.apache.shiro.web.tags.HasPermissionTag.showTagBody(HasPermissionTag.java:32)at org.apache.shiro.web.tags.PermissionTag.onDoStartTag(PermissionTag.java:57)at org.apache.shiro.web.tags.SecureTag.doStartTag(SecureTag.java:53)at org.apache.jsp.WEB_002dINF.view.common.sysPermission.sysPermission_jsp._jspx_meth_shiro_005fhasPermission_005f0(sysPermission_jsp.java:486)at org.apache.jsp.WEB_002dINF.view.common.sysPermission.sysPermission_jsp._jspService(sysPermission_jsp.java:147)at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1244)at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1027)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:971)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61)at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108)at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137)at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66)at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:107)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:879)at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:617)at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1778)at java.lang.Thread.run(Thread.java:745)
ViewWildcardPermission. javaSource code:
protected void setParts(String wildcardString, boolean caseSensitive) { wildcardString = StringUtils.clean(wildcardString); if(wildcardString != null && !wildcardString.isEmpty()) { List parts = CollectionUtils.asList(wildcardString.split(":")); this.parts = new ArrayList(); Iterator i$ = parts.iterator(); while(i$.hasNext()) { String part = (String)i$.next(); Set 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."); } }
Because the null value is inserted into the permission information, the above exception is thrown.
It is normal to remove null values.
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: 154) at org. apache. shiro. authz. permission. wildcardPermission. <init> (WildcardPermission. java: 143) at org. apache. shiro. authz. permission. wildcardPermission. <init> (WildcardPermission. java: 139) 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) at org. apache. shiro. authz. modularRealmAuthorizer. isPermitted (ModularRealmAuthorizer. java: 223) at org. apache. shiro. mgt. authorizingSecurityManager. isPermitted (AuthorizingSecurityManager. java: 113) at org. apache. shiro. subject. support. delegatingSubject. isPermitted (DelegatingSubject. java: 158) at org. apache. shiro. web. tags. permissionTag. isPermitted (PermissionTag. java: 66) at org. apache. shiro. web. tags. hasPermissionTag. showTagBody (HasPermissionTag. java: 32) at org. apache. shiro. web. tags. permissionTag. onDoStartTag (PermissionTag. java: 57) at org. apache. shiro. web. tags. secureTag. doStartTag (SecureTag. java: 53) at org. apache. jsp. WEB_002dINF.view.common.sysPermission.sysPermission_jsp. _ jspx_meth_shiro_005fhasPermission_005f0 (sysPermission_jsp.java: 486) at org. apache. jsp. WEB_002dINF.view.common.sysPermission.sysPermission_jsp. _ jspService (sysPermission_jsp.java: 147) at org. apache. jasper. runtime. httpJspBase. service (HttpJspBase. java: 70) at javax. servlet. http. httpServlet. service (HttpServlet. java: 723) at org. apache. jasper. servlet. jspServletWrapper. service (JspServletWrapper. java: 388) at org. apache. jasper. servlet. jspServlet. serviceJspFile (JspServlet. java: 313) at org. apache. jasper. servlet. jspServlet. service (JspServlet. java: 260) at javax. servlet. http. httpServlet. service (HttpServlet. java: 723) at org. apache. catalina. core. applicationFilterChain. internalDoFilter (ApplicationFilterChain. java: 290) at org. apache. catalina. core. applicationFilterChain. doFilter (ApplicationFilterChain. java: 206) at org. apache. catalina. core. applicationDispatcher. invoke (ApplicationDispatcher. java: 646) at org. apache. catalina. core. applicationDispatcher. processRequest (ApplicationDispatcher. java: 436) at org. apache. catalina. core. applicationDispatcher. doForward (ApplicationDispatcher. java: 374) at org. apache. catalina. core. applicationDispatcher. forward (ApplicationDispatcher. java: 302) at org. springframework. web. servlet. view. internalResourceView. renderMergedOutputModel (InternalResourceView. java: 168) at org. springframework. web. servlet. view. abstractView. render (AbstractView. java: 303) at org. springframework. web. servlet. dispatcherServlet. render (DispatcherServlet. java: 1244) at org. springframework. web. servlet. dispatcherServlet. processDispatchResult (DispatcherServlet. java: 1027) at org. springframework. web. servlet. dispatcherServlet. doDispatch (DispatcherServlet. java: 971) at org. springframework. web. servlet. dispatcherServlet. doService (DispatcherServlet. java: 893) at org. springframework. web. servlet. frameworkServlet. processRequest (FrameworkServlet. java: 966) at org. springframework. web. servlet. frameworkServlet. doGet (FrameworkServlet. java: 857) at javax. servlet. http. httpServlet. service (HttpServlet. java: 617) at org. springframework. web. servlet. frameworkServlet. service (FrameworkServlet. java: 842) at javax. servlet. http. httpServlet. service (HttpServlet. java: 723) at org. apache. catalina. core. applicationFilterChain. internalDoFilter (ApplicationFilterChain. java: 290) at org. apache. catalina. core. applicationFilterChain. doFilter (ApplicationFilterChain. java: 206) at org. apache. shiro. web. servlet. proxiedFilterChain. doFilter (ProxiedFilterChain. java: 61) at org.apache.shiro.web.servlet.AdviceFilter.exe cuteChain (AdviceFilter. java: 108) at org. apache. shiro. web. servlet. adviceFilter. doFilterInternal (AdviceFilter. java: 137) at org. apache. shiro. web. servlet. oncePerRequestFilter. doFilter (OncePerRequestFilter. java: 125) at org. apache. shiro. web. servlet. proxiedFilterChain. doFilter (ProxiedFilterChain. java: 66) at org.apache.shiro.web.servlet.AbstractShiroFilter.exe cuteChain (AbstractShiroFilter. java: 449) at org. apache. shiro. web. servlet. abstractShiroFilter $1. call (AbstractShiroFilter. java: 365) at org. apache. shiro. subject. support. subjectCallable. doCall (SubjectCallable. java: 90) at org. apache. shiro. subject. support. subjectCallable. call (SubjectCallable. java: 83) at org.apache.shiro.subject.support.DelegatingSubject.exe cute (DelegatingSubject. java: 383) at org. apache. shiro. web. servlet. abstractShiroFilter. doFilterInternal (AbstractShiroFilter. java: 362) at org. apache. shiro. web. servlet. oncePerRequestFilter. doFilter (OncePerRequestFilter. java: 125) at org. springframework. web. filter. delegatingFilterProxy. invokeDelegate (DelegatingFilterProxy. java: 344) at org. springframework. web. filter. delegatingFilterProxy. doFilter (DelegatingFilterProxy. java: 261) at org. apache. catalina. core. applicationFilterChain. internalDoFilter (ApplicationFilterChain. java: 235) at org. apache. catalina. core. applicationFilterChain. doFilter (ApplicationFilterChain. java: 206) at com. alibaba. druid. support. http. webStatFilter. doFilter (WebStatFilter. java: 123) at org. apache. catalina. core. applicationFilterChain. internalDoFilter (ApplicationFilterChain. java: 235) at org. apache. catalina. core. applicationFilterChain. doFilter (ApplicationFilterChain. java: 206) at org. springframework. web. filter. characterEncodingFilter. doFilterInternal (CharacterEncodingFilter. java: 85) at org. springframework. web. filter. oncePerRequestFilter. doFilter (OncePerRequestFilter. java: 107) at org. apache. catalina. core. applicationFilterChain. internalDoFilter (ApplicationFilterChain. java: 235) at org. apache. catalina. core. applicationFilterChain. doFilter (ApplicationFilterChain. java: 206) at org. apache. catalina. filters. setCharacterEncodingFilter. doFilter (SetCharacterEncodingFilter. java: 107) at org. apache. catalina. core. applicationFilterChain. internalDoFilter (ApplicationFilterChain. java: 235) at org. apache. catalina. core. applicationFilterChain. doFilter (ApplicationFilterChain. java: 206) at org. apache. catalina. core. standardWrapperValve. invoke (StandardWrapperValve. java: 233) at org. apache. catalina. core. standardContextValve. invoke (StandardContextValve. java: 191) at org. apache. catalina. core. standardHostValve. invoke (StandardHostValve. java: 127) at org. apache. catalina. valves. errorReportValve. invoke (ErrorReportValve. java: 103) at org. apache. catalina. core. standardEngineValve. invoke (StandardEngineValve. java: 109) at org. apache. catalina. connector. coyoteAdapter. service (CoyoteAdapter. java: 293) at org. apache. coyote. http11.Http11AprProcessor. process (Http11AprProcessor. java: 879) at org. apache. coyote. http11.Http11AprProtocol $ Http11ConnectionHandler. process (Http11AprProtocol. java: 617) at org.apache.tomcat.util.net. aprEndpoint $ Worker. run (AprEndpoint. java: 1778) at java. lang. thread. run (Thread. java: 745)