【发布时间】:2011-10-24 22:05:38
【问题描述】:
我是 Spring 新手,我的要求是我不想使用用户名和密码对用户进行身份验证。 用户通过身份验证是其他应用程序,我的应用程序通过以下详细信息获取请求:
- 用户名
- 角色
我只想根据请求中的角色使用 Spring Security 来保护页面。 我已经考虑过编写 UserDetailService,但是只添加请求数据,Spring 仍然要求提供身份验证信息。 然后我想写如下内容:
public class UserLogin {
/*
@Resource(name = "userDetailsService")
private UserDetailsService userDetailsService;
*/
@Resource(name = "authenticationManager")
private AuthenticationManager authenticationManager;
public boolean login(UserEntity user) {
//UserDetails ud = userDetailsService.loadUserByUsername(username);
Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
for (String role : user.getAuthorities()) {
authorities.add(new GrantedAuthorityImpl(role));
}
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(user.getUsername(), user.getPassword(), authorities);
try {
Authentication auth = authenticationManager.authenticate(token);
SecurityContext securityContext = new SecurityContextImpl();
// Places in ThredLocal for future retrieval
SecurityContextHolder.setContext(securityContext);
SecurityContextHolder.getContext().setAuthentication(auth);
} catch (AuthenticationException e) {
return false;
}
return true;
}
}
我的方向是否正确。如果是这样,如何在 spring-xml 中配置整个事情。
【问题讨论】:
标签: spring-security