当前位置: 首页 > 知识库问答 >
问题:

Spring Security 4。指定访问决策管理器时出现异常

桓喜
2023-03-14

我正在Java项目中使用Spring Security4。当我在http元素中指定标记access-decision-manager-ref时,我有以下异常:

org.springframework.beans.factory.beanCreationException:创建名为“org.springframework.security.filterchains”的bean时出错:使用键[0]设置bean属性“source list”时,无法解析对bean“org.springframework.security.web.defaultsecurityfilterchain#0”的引用;嵌套异常为org.SpringFramework.Beans.Factory.BeanCreationException:创建名为“org.SpringFramework.Security.Web.DefaultSecurityFilterChain#0”的bean时出错:使用键[13]设置构造函数参数时无法解析对bean“org.SpringFramework.Security.Web.Access.Intercept.FilterSecurityInterceptor#0”的引用;嵌套异常为org.SpringFramework.Beans.Factory.BeanCreationException:创建名为“org.SpringFramework.Security.Web.Access.Intercept.FilterSecurityInterceptor#0”的bean时出错:调用init方法失败;嵌套异常为java.lang.IllegalArgumentException:不支持的配置属性:[HasRole('Admin')]

下面是我的xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:security="http://www.springframework.org/schema/security"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                    http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security.xsd">

<security:http auto-config="true" access-decision-manager-ref="accessDecisionManager"
     use-expressions="true">
    <security:intercept-url pattern="/admin/*"
        access="hasRole('ADMIN')" />
    <security:remember-me key="terror-key" />
    <security:logout delete-cookies="JSESSIONID"
        success-handler-ref="logoutRedirectToAny" />
    <security:form-login login-page="/custom_login"
        authentication-failure-handler-ref="serverErrorHandler" />
</security:http>

<bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased">
    <constructor-arg>
        <list>
            <bean class="org.springframework.security.access.vote.RoleVoter" />
            <bean class="org.springframework.security.access.vote.AuthenticatedVoter" />
        </list>
    </constructor-arg>
</bean>

<security:authentication-manager>
    <security:authentication-provider
        user-service-ref="inMemoryUserServiceWithCustomUser" />
</security:authentication-manager>

<bean id="inMemoryUserServiceWithCustomUser"
    class="com.apress.pss.terrormovies.spring.CustomInMemoryUserDetailsManager">
    <constructor-arg>
        <list>
            <bean class="com.apress.pss.terrormovies.model.User">
                <constructor-arg value="admin" />
                <constructor-arg value="admin" />
                <constructor-arg>
                    <list>
                        <bean
                            class="org.springframework.security.core.authority.SimpleGrantedAuthority">
                            <constructor-arg value="ROLE_ADMIN" />
                        </bean>
                    </list>
                </constructor-arg>
                <constructor-arg value="Scarioni" />
            </bean>
        </list>
    </constructor-arg>
</bean>

<bean id="logoutRedirectToAny"
    class="org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler">
    <property name="targetUrlParameter" value="redirectTo" />
</bean>

<bean id="serverErrorHandler" class="com.apress.pss.terrormovies.security.ServerErrorFailureHandler"/>

</beans>

共有1个答案

鲁单弓
2023-03-14

如果希望将表达式与自定义AccessDecisionManager一起使用,还需要一个表达式投票器,例如。

<bean id="accessDecisionManager" class="org.springframework.security.access.vote.UnanimousBased">
    <constructor-arg>
        <list>
            <bean class="org.springframework.security.web.access.expression.WebExpressionVoter" />

            <bean class="org.springframework.security.access.vote.RoleVoter" />
            <bean class="org.springframework.security.access.vote.AuthenticatedVoter" />
        </list>
    </constructor-arg>
</bean>
 类似资料:
  • 我想不出这个问题 这是我的nginx配置文件:

  • 这一章节假设你有一些Spring Security中访问控制的底层架构的知识。如果没有,你可以跳过他,后面再来看,这部分针对那些真正需要进行一些定制而不是简单的基于角色的安全的用户。 当你使用命名空间配置时,一个AccessDecisionManager实例将会被自动创建并注册用来按照你在intercept-url和protect-pointcut(还有如果你使用了方法注解安全也包含在内)定义的访

  • 我有一个Spring启动项目,它作为一个库(打包的jar文件)到其他一些项目。我试图哟配置咖啡因缓存,将异步刷新请求后,向服务。 pom.xml(包括): 我的配置类: DAO层(此处需要缓存): DAO层(这里也需要缓存): 运行此安装程序时,我遇到以下错误堆栈: 不确定设置中缺少什么?

  • 定时器管理接口 结构体 struct   rt_timer   定时器控制块 更多...   宏定义 #define  RT_TIMER_FLAG_DEACTIVATED   0x0   定时器未激活   #define  RT_TIMER_FLAG_ACTIVATED   0x1   定时器已激活   #define  RT_TIMER_FLAG_ONE_SHOT   0x0   一次性计时器

  • 本文向大家介绍解决npm管理员身份install时出现权限的问题,包括了解决npm管理员身份install时出现权限的问题的使用技巧和注意事项,需要的朋友参考一下 在用npm安装模块时,虽然我是通过管理员身份执行的,但依然会报有关权限的错 这是因为我手贱升了个级,升到了最新的5.3.0。升级之后应该在install后面加上–no-optional 所以说,同志们,不要盲目最求最新版本 以上这篇解决

  • 在Firebase Firestore中,我试图只允许(自定义分配的)管理员写/更新/删除资源,为此我有以下安全规则: 我正在使用users集合中标记为管理员的用户登录: NfwIQAjfNdS85yDvd5yPVDyMTUj2是从身份验证窗格中获得的UID: