2014-12-10 25 views
5

Ho cercato di assegnare diversi URL non autorizzati per diversi ruoli nella sezione url del file shiro.ini per un'applicazione web ma sembra che non sia in grado di farlo. Di seguito è riportato il codice che ho provato.Come utilizzare diversi URL non autorizzati per diversi ruoli in apache shiro

file di 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 

Dopo il login all'applicazione suo reindirizzamento alla pagina autorizzato con l'errore Error 401: SRVE0295E: Error reported: 401.

Questo errore si è verificato dopo aver aggiunto unauthorizedUrl=/adminAuthPage.xhtml. Se c'è qualche errore nel codice, si prega di suggerire.

risposta

0

Cosa ne pensi di fare un singolo non autorizzato pagina che agisce come un punto di ingresso ora sulla sua pagina di redirect a pagine richieste

403.jsp

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

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

o meglio, se si desidera solo amministratore ha un'altra pagina, quindi

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

Ma c'è un modo per farlo da shiro ini map ping. Se si trova una soluzione utilizzando la mappatura del file shiro.ini, si prega di condividere –

+0

Ho seguito la documentazione e il codice sorgente ma non riesco a trovare tale mappatura. Potresti essere in grado di sollevare una richiesta di miglioramento con gli sviluppatori. – dev

0

Non penso che questo sia il modo in cui dovrebbe essere fatto, in pratica si vuole aggiungere un permesso all'interno dei ruoli.

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

questo

/testapp/** = authc1, ruoli [admin, unauthorizedUrl =/adminAuthPage.xhtml]

dovrebbe essere:

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

+0

questo è quello che provato ma non funziona,/testapp/** = authc1, ruoli [admin], perms ["admin: unauthorizedUrl =/adminAuthPage.xhtml"] /userfld/** = authc2, ruoli [utente], perms ["utente : unauthorizedUrl =/abortPage.xhtml "] –