2011-03-30 12 views
13

Starając się sprawdzać, czy użytkownik jest zalogowany używam następujący kod:Błąd przy użyciu Spring upoważnia tag, aby sprawdzić, czy użytkownik jest zalogowany?

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

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

Ale ja otrzymuję następujący 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) 

Odpowiedz

21

używać wyrażeń, aby zabezpieczyć poszczególne adresy URL, to trzeba najpierw ustawić do użycia wyrażeń atrybut w elemencie do prawdziwej

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

+0

tak mam to działa właśnie teraz. dziękuję i masz rację. – SJS

24

Ustawienie Użycie wyrażeń = "true" w elemencie http będzie działać, ale oznacza, że ​​wszystkie ustawienia zabezpieczeń zarówno w kodzie Java, jak i w kontekście zabezpieczeń muszą korzystać z notacji wyrażeń. Może to stanowić problem, jeśli używasz standardowych notatek bezpieczeństwa.

używać obu wyrażeń i standardowe oznaczenia po prostu zadeklarować nową fasolkę w kontekście zabezpieczeń jak tak -

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

Nie działa przynajmniej dla wyrażeń wewnątrz elementu http w kontekście bezpieczeństwa. – newbie

Powiązane problemy