2011-03-30 7 views
13

mettermi alla prova per vedere se un utente è connesso Sto usando il seguente codice:Errore durante l'utilizzo del tag di autorizzazione Spring per verificare se l'utente ha effettuato l'accesso?

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> 

<sec:authorize access="isAuthenticated()"> 
    YES, you are logged in! 
</sec:authorize> 

Ma sto ottenendo il seguente erorr?

javax.servlet.jsp.JspException: No visible WebSecurityExpressionHandler instance could be found in the application context. There must be at least one in order to support expressions in JSP 'authorize' tags. 
     at org.springframework.security.taglibs.authz.AuthorizeTag.getExpressionHandler(AuthorizeTag.java:100) 
     at org.springframework.security.taglibs.authz.AuthorizeTag.authorizeUsingAccessExpression(AuthorizeTag.java:58) 
     at org.springframework.security.taglibs.authz.AuthorizeTag.doStartTag(AuthorizeTag.java:48) 

risposta

21

Per usare le espressioni per fissare singoli URL, si dovrebbe prima necessario impostare l'uso a espressioni di attributo nell'elemento true

<http use-expressions="true"> See Spring Security doc

+0

sì ho preso a lavorare solo ora. grazie e avevi ragione – SJS

24

Impostazione d'uso espressioni = "true" nell'elemento http funzionerà, ma significa che tutte le impostazioni di sicurezza nel codice Java e nei contesti di sicurezza devono utilizzare le notazioni di espressione. Questo può essere un problema se stai usando le notazioni di sicurezza standard.

Per utilizzare entrambe le espressioni e le notazioni standard, solo dichiarare una nuova fagiolo nel vostro contesto di protezione in questo modo -

<beans:bean class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler"/> 
+0

Non funziona almeno per le espressioni all'interno dell'elemento http nel contesto di sicurezza. – newbie

Problemi correlati