问题描述
- shiro JSP使用标签报错
- 在JSP页面使用shiro标签报错,要怎么改?求大神指点
java.lang.IllegalArgumentException: Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
org.apache.shiro.authz.permission.WildcardPermission.setParts(WildcardPermission.java:151)
org.apache.shiro.authz.permission.WildcardPermission.(WildcardPermission.java:142)
org.apache.shiro.authz.permission.WildcardPermission.(WildcardPermission.java:138)
org.apache.shiro.authz.permission.WildcardPermissionResolver.resolvePermission(WildcardPermissionResolver.java:41)
org.apache.shiro.realm.AuthorizingRealm.resolvePermissions(AuthorizingRealm.java:433)
org.apache.shiro.realm.AuthorizingRealm.getPermissions(AuthorizingRealm.java:409)
org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:466)
org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:462)
org.apache.shiro.realm.AuthorizingRealm.isPermitted(AuthorizingRealm.java:457)
org.apache.shiro.authz.ModularRealmAuthorizer.isPermitted(ModularRealmAuthorizer.java:223)
org.apache.shiro.mgt.AuthorizingSecurityManager.isPermitted(AuthorizingSecurityManager.java:113)
org.apache.shiro.subject.support.DelegatingSubject.isPermitted(DelegatingSubject.java:158)
org.apache.shiro.web.tags.PermissionTag.isPermitted(PermissionTag.java:66)
org.apache.shiro.web.tags.HasPermissionTag.showTagBody(HasPermissionTag.java:32)
org.apache.shiro.web.tags.PermissionTag.onDoStartTag(PermissionTag.java:57)
org.apache.shiro.web.tags.SecureTag.doStartTag(SecureTag.java:53)
org.apache.jsp.success_jsp._jspx_meth_shiro_005fhasPermission_005f0(success_jsp.java:205)
org.apache.jsp.success_jsp._jspService(success_jsp.java:122)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:438)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:344)
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:261)index.jsp
<%@ page contentType=""text/html;charset=UTF-8"" language=""java"" %>Hello World!
<form action=""/login.do"" method=""post""> <table> <tr> <td>账号:</td> <td><input name=""username"" value=""${users.username}""/></td> </tr> <tr> <td>密码:</td> <td><input type=""password"" name=""password"" value=""${users.password}""/></td><br/> <td><input type=""submit"" value=""login""/><span style=""font-size: 12px;color: red"">${error}</span></td> </tr> </table></form>
登录成功之后的页面success.jsp
<%@ page contentType=""text/html;charset=UTF-8"" language=""java"" %>
<%@ taglib prefix=""shiro"" uri=""http://shiro.apache.org/tags"" %>Insert title here
${info }欢迎你
欢迎有admin角色的用户!shiro:principal/
/shiro:hasRole欢迎有student:create权限的用户!shiro:principal/
/shiro:hasPermissioncontroller
@Controller
public class UsersController {@Autowiredprivate UsersService usersService;@RequestMapping(""/login"")public String login(Model modelUsers users){ Subject subject = SecurityUtils.getSubject(); UsernamePasswordToken token = new UsernamePasswordToken(users.getUsername()users.getPassword()); try { subject.login(token);
// Model model1 = (Model) subject.getSession();
// model1.addAttribute(""info""welcome to"");
// Session session = subject.getSession();
// session.setAttribute(""info""Welcome To Shiro"");
return ""redirect:/success.jsp"";
}catch (Exception e) {
e.printStackTrace();
model.addAttribute(""users""users);
model.addAttribute(""error""用户名或密码错误"");
return ""index"";
}
}}
解决方案
下次问问题得贴代码大家才能分析...
解决方案二:
Shiro提供了JSTL标签用于在JSP/GSP页面进行权限控制,如根据登录用户显示相应的页面按钮。
?
?
导入标签库
Java代码??
@taglib?prefix=""shiro""?uri=""http://shiro.apache.org/tags""?%>??
标签库定义在shiro-web.jar包下的META-INF/shiro.tld中定义。
?
gu......
答案就在这里:shiro jsp标签使用