Как использовать разные несанкционированные url для разных ролей в apache shiro


Я пытался назначить разные несанкционированные url-адреса для разных ролей в разделе url-адресов shiro.ini файл для веб-приложения, но, кажется, я не в состоянии сделать это.Ниже приведен код, который я пробовал.

Широ.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. Если есть какие-либо ошибки в коде, пожалуйста, предложите.

2 5

2 ответа:

Как насчет того, чтобы вы сделали единственную несанкционированную страницу, которая действует как точка входа, теперь на его странице перенаправление на требуемые страницы

[2]}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>

Я не думаю, что это так, как это должно быть сделано, вы в основном хотите добавить разрешение внутри ролей.

Http://shiro.apache.org/web.html

Это

/testapp/** = authc1, роли [admin, unauthorizedUrl= / adminAuthPage.xhtml]

Должно быть:

/testapp/* * = authc1, роли [admin], perms ["admin::"]