2011-03-30 1 views
13

次のコードを使用していたユーザがIでログインしているかどうかをテストしようとすると:ユーザーがログインしているかどうかを確認するためのSpring認可タグを使用しているときのエラー?

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

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

をしかし、私は、次の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) 

答えて

21

=「true」を使用-式をtrueに設定

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

+0

- ちょうどそのようなあなたのセキュリティコンテキストで新しいBeanを宣言式と標準表記法の両方を使用するには

。ありがとうございました。あなたは正しいです – SJS

24

に要素に属性を使用すると、最初に使用する式を設定する必要があり、個々のURLを確保するために式を使用するにはhttp要素では動作しますが、Javaコードとセキュリティコンテキストの両方のセキュリティ設定に式の表記法を使用する必要があることを意味します。これは、現在標準のセキュリティ記法を使用している場合には問題になります。はい、私はちょうど今働いてしまった

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

少なくともセキュリティコンテキストのhttp要素内の式には作用しません。 – newbie

関連する問題