gpt4 book ai didi

spring-security - 在 applicationContext 中找不到可见的 WebSecurityExpressionHandler 实例

转载 作者:行者123 更新时间:2023-12-04 05:29:36 24 4
gpt4 key购买 nike

我正在尝试使用 实现部分级别的安全性Spring3.1 .使用 thymeleaf 2.0 对于我的观点。这是我为此所做的配置,
使用的 jar ## - 全部 spring3.1 jar thymeleaf-extras-springsecurity3.jar(版本 1.0.0.beta-1)
SpringWebFlow-Servlet.xml

<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
...
<property name="additionalDialects">
<set>
<bean class="org.thymeleaf.extras.springsecurity3.dialect.SpringSecurityDialect"/>
</set>
</property>
...
</bean>
<bean id="webexpressionHandler" class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler" />
spring-security.xml
 <http auto-config="true" use-expressions="true">
<intercept-url pattern="/productSelection" access="hasRole('ROLE_ADMIN')"/>
.....
</http>
xxx.html
<div sec:authorize="hasRole('ROLE_ADMIN')">
This only be seen if authenticated user has role ROLE_ADMIN.
</div>
问题

Getting an Exception stating :No visible WebSecurityExpressionHandler instance could be found in the applicationContext


在 Spring3.1 中,DefaultWebSecurityExpressionHandler 没有实现 WebSecurityExpressionHandler 并且该接口(interface)已被弃用。请让我知道解决方法,因为 Thymeleaf 正在尝试搜索 ApplicationContext 中不可用的 WebSecurityExpressionHandler 实例。

最佳答案

您需要在应用程序(根)上下文而不是 servlet 上下文中定义 bean。

<bean id="webSecurityExpressionHandler" class="org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler"/>

我有同样的问题将它从 servlet-context.xml 移动到 root-context.xml 并且 bean 被拾取。

根据您的 spring 设置,它可以在另一个 xml 文件中,因此请检查您的 web.xml 中的 Spring 上下文根。

在您的情况下,如果 spring-security.xml 在您的 Spring 根上下文中导入,您可以将它添加到那里。

关于spring-security - 在 applicationContext 中找不到可见的 WebSecurityExpressionHandler 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12786251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com