मैंने स्प्रिंग सुरक्षा फ्रेमवर्क के माध्यम से उपयोगकर्ता प्रमाणीकरण लागू किया है और सब कुछ ठीक काम करता है। मैं में प्रवेश करें और लॉग आउट कर सकते हैं, मैं इस तरह के उदाहरण के लिए उपयोगकर्ता नाम लॉग इन कर सकते हैं:स्प्रिंग सुरक्षा उपयोगकर्ता ऑब्जेक्ट
String userName = ((UserDetails) auth.getPrincipal()).getUsername();
अब मैं डेटाबेस से एक वस्तु (i प्रयोक्ता आईडी और अन्य उपयोगकर्ता गुण की जरूरत है) की तरह उपयोगकर्ता प्राप्त करना चाहते हैं।
यह कैसे मैं अब तक की कोशिश की है:
User user = (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
इसके बाद मैं अपवाद निम्न गया:
Request processing failed; nested exception is java.lang.ClassCastException: org.springframework.security.core.userdetails.User cannot be cast to net.viralpatel.contact.model.User
यहाँ एक सवाल है - मैं कैसे वस्तु के रूप में उपयोगकर्ता प्राप्त कर सकते हैं, मैं कैसे को संशोधित करना चाहिए मेरी कक्षाएं UserDetailsServiceImpl और UserAssembler, कोई विचार?
@Component
@Transactional
public class UserDetailsServiceImpl implements UserDetailsService{
@Autowired
private UserDAO userDAO;
@Autowired
private UserAssembler userAssembler;
private static final Logger logger = LoggerFactory.getLogger(UserDetailsServiceImpl.class);
@Transactional(readOnly = true)
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException, DataAccessException {
User user = userDAO.findByEmail(username);
if(null == user) throw new UsernameNotFoundException("User not found");
return userAssembler.buildUserFromUser(user);
}
}
और एक और एक:
@Service("assembler")
public class UserAssembler {
@Autowired
private UserDAO userDAO;
@Transactional(readOnly = true)
public User buildUserFromUser(net.viralpatel.contact.model.User user) {
String role = "ROLE_USER";//userEntityDAO.getRoleFromUserEntity(userEntity);
Collection<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new GrantedAuthorityImpl(role));
return new User(user.getLogin(), user.getPassword(), true, true, true, true, authorities);
}
}
मेरे उपयोगकर्ता वर्ग सिर्फ इकाई – user3127896
जैसा कि बताया जा रहा है कर सकते हैं कुछ कस्टम जानकारी की जरूरत है, तो आप बढ़ाने की जरूरत वसंत की उपयोगकर्ता कक्षा। –
मुझे त्रुटि मिली - उपयोगकर्ता – user3127896