Tôi gặp sự cố khi hiển thị liên kết đăng xuất trong trang JSP chỉ khi người dùng được xác thực. Dưới đây là ngoại lệ Tôi có ít dòng này của trang JSP:Bảo mật mùa xuân - Không thể nhìn thấy cá thể WebSecurityExpressionHandler trong ngữ cảnh ứng dụng
<sec:authorize access="isAuthenticated()">
Ngoại lệ:
Stacktrace:
....
root cause
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.
org.springframework.security.taglibs.authz.AuthorizeTag.getExpressionHandler(AuthorizeTag.java:100)
org.springframework.security.taglibs.authz.AuthorizeTag.authorizeUsingAccessExpression(AuthorizeTag.java:58)
ở đây là tôi ứng dụng bối cảnh Security.xml:
<http auto-config='true' >
<intercept-url pattern="/user/**" access="ROLE_User" />
<logout logout-success-url="/hello.htm" />
</http>
<beans:bean id="daoAuthenticationProvider"
class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<beans:property name="userDetailsService" ref="userDetailsService" />
</beans:bean>
<beans:bean id="authenticationManager"
class="org.springframework.security.authentication.ProviderManager">
<beans:property name="providers">
<beans:list>
<beans:ref local="daoAuthenticationProvider" />
</beans:list>
</beans:property>
</beans:bean>
<authentication-manager>
<authentication-provider user-service-ref="userDetailsService">
<password-encoder hash="plaintext" />
</authentication-provider>
</authentication-manager>
Tôi hiểu mà tôi có thể sử dụng use-expression = "true" trong thẻ http nhưng điều đó có nghĩa là tôi sẽ phải sử dụng biểu thức trong thẻ chặn url và trong mã java. Có cách giải quyết nào không?
Quan sát không liên quan. 'DaoAuthenticationProvider' và' authenticationManager' trong cấu hình của bạn không được sử dụng. –