【发布时间】:2011-01-03 03:11:58
【问题描述】:
我有一个带有以下设置的 Spring 应用程序(Spring 版本 2.5.6.SEC01,Spring Security 版本 2.0.5)(这是基于 @987654321 @):
在 security-config.xml 文件中,我有以下配置:
<http>
<!-- Restrict URLs based on role -->
<intercept-url pattern="/WEB-INF/jsp/login.jsp*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/WEB-INF/jsp/header.jsp*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/WEB-INF/jsp/footer.jsp*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/login*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/index.jsp" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/logoutSuccess*" access="ROLE_ANONYMOUS" />
<intercept-url pattern="/css/**" filters="none" />
<intercept-url pattern="/images/**" filters="none" />
<intercept-url pattern="/**" access="ROLE_ANONYMOUS" />
<anonymous />
<form-login login-page="/login.jsp"/>
</http>
<beans:bean id="myUserDetailsService" class="com.example.login.MyUserDetailsService">
<beans:property name="dataSource" ref="dataSource" />
<custom-authentication-provider />
</beans:bean>
<authentication-provider user-service-ref="myUserDetailsService" />
定义了 com.example.login.MyUserDetailsService 类:
public class MyUserDetailsService extends SimpleJdbcDaoSupport implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException,
DataAccessException {
logger.info("MyUserDetailsService.loadUserByUsername: Entered method. Username [" + userName + "]");
...
}
}
但我没有看到这条日志行。如何定义自定义 UserDetailsService 以便设置安全角色?我什至不需要自定义服务,但在 security-config.xml 中有这个
<authentication-provider> <jdbc-user-service data-source-ref="dataSource" />
</authentication-provider>
即使我有用户和权限表,也没有设置角色。如何设置 Spring 安全角色?
【问题讨论】:
-
注意:
<custom-authentication-provider>是 deprecated。
标签: java spring authentication spring-security