我一直在尝试为shiro.ini文件的url部分为Web应用程序分配不同的未授权URL,但似乎我无法做到.Below是我尝试过的代码。
shiro.ini文件
[main]
authc1 = org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authc2 = org.apache.shiro.web.filter.authc.FormAuthenticationFilter
authc1.loginUrl = /login.xhtml
authc2.loginUrl = /secLoginPage.xhtml
[urls]
/login.xhtml = authc1
/secLoginPage.xhtml = authc2
/testapp/** = authc1, roles[admin,unauthorizedUrl=/adminAuthPage.xhtml]
/userfld/**=authc2,roles[user,unauthorizedUrl=/abortPage.xhtml]
/** = authc1
/** = authc2
登录到应用程序后,它会重定向到授权页面,错误为Error 401: SRVE0295E: Error reported: 401
。
添加unauthorizedUrl=/adminAuthPage.xhtml
后发生此错误。
如果代码中有任何错误,请建议。
答案 0 :(得分:0)
我认为这不应该是这样做的,你基本上想要在角色中添加权限。
http://shiro.apache.org/web.html
此
/ testapp / ** = authc1,roles [admin,unauthorizedUrl = / adminAuthPage.xhtml]
应该是:
/ testapp / ** = authc1,角色[admin],烫发["管理员::"]
答案 1 :(得分:0)
如何制作一个单独的未经授权的页面,该页面就像现在在他的页面上的入口点重定向到所需的页面
403.jsp
<shiro:hasRole name="admin">
<c:redirect url="adminAuthPage.xhtml"/>
</shiro:hasRole>
<shiro:hasRole name="user">
<c:redirect url="abortPage.xhtml"/>
</shiro:hasRole>
或者更好,如果你只是想让管理员有另一页,那么
<shiro:hasRole name="admin">
<c:redirect url="adminAuthPage.xhtml"/>
</shiro:hasRole>
<shiro:lacksRole name="admin">
<c:redirect url="abortPage.xhtml"/>
</shiro:lacksRole>