0
我從我的上一個Get authenticated user entity Spring MVC創建此主題,我問了關於正確獲取經過身份驗證的用戶實體的問題。我建議,如果我的UserDetailsService配置是正確的,則Principal對象(例如,在我的視圖<sec:authentication property="principal.customFieldName" />
中)可以訪問我的自定義字段。我的UserDetailsService配置是否正確完成此功能?UserDetailsService配置正確獲取用戶
@Service("userDetailsService")
public class UserDetailsServiceImpl implements UserDetailsService {
private static final Logger logger = Logger.getLogger(UserDetailsServiceImpl.class);
@Autowired
@Qualifier("hibernateUserDao")
private UserDAO userDAO;
@Override
@Transactional(readOnly = true)
public org.springframework.security.core.userdetails.UserDetails loadUserByUsername(String userName) throws UsernameNotFoundException, DataAccessException {
UserDetails user = userDAO.findByLogin(userName);
if (user == null) {
logger.error("User was not found! Input login: " + userName);
}
return buildUserFormUserEntity(user);
}
@Transactional(readOnly = true)
private org.springframework.security.core.userdetails.User buildUserFormUserEntity(UserDetails userDetails) {
boolean enableStatus = userDetails.isEnabled();
String userName = userDetails.getLogin();
String password = userDetails.getPassword();
boolean enabled = enableStatus;
boolean accountNonExpired = enableStatus;
boolean credentialsNonExpired = enableStatus;
boolean accountNonLocked = enableStatus;
Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority(userDetails.getRole()));
User springSecurityUser = new User(userName, password, enabled, accountNonExpired, credentialsNonExpired, accountNonLocked, authorities);
return springSecurityUser;
}
public UserDAO getUserDAO() {
return userDAO;
}
public void setUserDAO(UserDAO userDAO) {
this.userDAO = userDAO;
}
}
但是我已經有了這個方法。不會干預舊的新方法嗎? – sidlejinks 2013-03-06 15:03:14
對不起,看起來我錯過了它。你的UserDetailsService類配置得很好。只有一個問題:你在哪裏設置你的'customFieldName'屬性的值? – 2013-03-06 15:37:13
對不起,但我應該在哪裏設置?我不知道...... – sidlejinks 2013-03-06 15:40:35