在将旧版应用程序迁移到Spring Security时,出现以下异常:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_filterChainProxy': Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_filterChainList': Cannot resolve reference to bean '_filterSecurityInterceptor' while setting bean property 'filters' with key [3]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '_filterSecurityInterceptor': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Unsupported configuration attributes: [superadmin] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:480) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
在旧的应用程序中,角色有“超级管理员”,“编辑者”,“帮助台”等。但是在所有Spring Security示例中,我只看到诸如“ ROLE _”(“ ROLE_ADMIN”等)的角色。当我将“ superadmin”重命名为“ ROLE_ADMIN”并且仅在配置中使用此角色时,一切正常。
不起作用:
<http auto-config="true"> <intercept-url pattern="/restricted/**" access="superadmin"/> <form-login authentication-failure-url="/secure/loginAdmin.do?error=true" login-page="/secure/loginAdmin.do" /> </http>
作品:
<http auto-config="true"> <intercept-url pattern="/restricted/**" access="ROLE_ADMIN"/> <form-login authentication-failure-url="/secure/loginAdmin.do?error=true" login-page="/secure/loginAdmin.do" /> </http>
可以使用自定义角色名称吗?
你正在使用默认配置,该配置期望角色以"ROLE_"前缀开头。你将必须添加自定义安全配置并将其设置rolePrefix为“”;
"ROLE_"
rolePrefix