2014-12-10 40 views
5

Próbowałem przypisać różne nieautoryzowane adresy URL dla różnych ról w sekcji url pliku shiro.ini dla aplikacji internetowej, ale wydaje się, że nie jestem w stanie tego zrobić. Poniżej znajduje się kod, który próbowałem.Jak używać różnych nieautoryzowanych adresów URL dla różnych ról w Apache Shiro

shiro.ini plik

[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 

Po zalogowaniu się do stosowania jej przekierowanie do strony z błędem autoryzowanego Error 401: SRVE0295E: Error reported: 401.

Ten błąd wystąpił po dodaniu unauthorizedUrl=/adminAuthPage.xhtml. Jeśli wystąpi jakiś błąd w kodzie, sugerujemy.

Odpowiedz

0

Co zrobisz z pojedynczym nieautoryzowanym strona, która działa jak punkt wejścia teraz na jego stronie przekierowanie do wymaganych stron

403.jsp

<shiro:hasRole name="admin"> 
    <c:redirect url="adminAuthPage.xhtml"/> 
</shiro:hasRole> 

<shiro:hasRole name="user"> 
    <c:redirect url="abortPage.xhtml"/> 
</shiro:hasRole> 

albo lepiej, jeśli chcesz tylko administrator ma inną stronę, a następnie

<shiro:hasRole name="admin"> 
     <c:redirect url="adminAuthPage.xhtml"/> 
</shiro:hasRole> 
<shiro:lacksRole name="admin"> 
    <c:redirect url="abortPage.xhtml"/> 
</shiro:lacksRole> 
+0

Ale czy jest jakiś sposób na zrobienie tego za pomocą shiro ini map świst. Jeśli znajdziesz jakieś rozwiązanie przy użyciu mapowania plików shiro.ini, proszę podziel się –

+0

. Śledziłem dokumentację i kod źródłowy, ale nie mogę znaleźć takiego odwzorowania. Być może możesz zgłosić prośbę o ulepszenie z programistami. – dev

0

Nie sądzę, że tak należy postępować, w zasadzie chcesz dodać uprawnienia wewnątrz ról.

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

to

/testapp/** = authc1, role [Administrator, unauthorizedUrl =/adminAuthPage.xhtml]

powinna wynosić:

/testapp/** = authc1, role [admin], perms ["admin: :"]

+0

to co ja próbowałem, ale to nie działa,/testapp/** = authc1, role [admin], perms ["admin: unauthorizedUrl =/adminAuthPage.xhtml"] /userfld/** = authc2, role [user], perms ["user : unauthorizedUrl =/abortPage.xhtml "] –