Я пытаюсь создать автоматический вход, когда пользователь успешно зарегистрированный в.Auto Войти после успешной регистрации не работает
Это Methode внутри контроллера, но не отображается второй logger.info(auth.toString());
.
@RequestMapping(value = "/createaccount",method = RequestMethod.POST)
public String createAccount(@ModelAttribute User user,BindingResult result){
if (result.hasErrors()){
return "newaccount";
}
if(usersService.exists(user.getEmail())){
result.rejectValue("email","DuplicateKey.user.email");
logger.info("caught duplicate email");
return "newaccount";
}
user.setAuthority("ROLE_USER");
user.setEnabled(true);
usersService.create(user);
// perform login authentication
try {
UserDetails userDetails = userDetailsSvc.loadUserByUsername(user.getEmail());
logger.info(userDetails);
logger.info(userDetails.getAuthorities());
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(userDetails, user.getPassword(), userDetails.getAuthorities());
logger.info(auth.toString());
authMgr.authenticate(auth);
logger.info(auth.toString());
// redirect into secured main page if authentication successful
if(auth.isAuthenticated()) {
logger.info("auth isAuthenticated");
SecurityContextHolder.getContext().setAuthentication(auth);
return "userlogin";
}
} catch (Exception e) {
logger.debug("Problem authenticating user" + user.getEmail(), e);
}
return "accountcreated";
}
Это мой инфокодов:
2015-08-12 14:11:20 [http-apr-8080-exec-1] INFO LoginController:112 - [email protected]: Username: xax; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USER
2015-08-12 14:11:20 [http-apr-8080-exec-1] INFO LoginController:113 - [ROLE_USER]
2015-08-12 14:11:20 [http-apr-8080-exec-1] INFO LoginController:116 - org.springframew[email protected]441d0272: Principal: [email protected]: Username: xax; Password: [PROTECTED]; Enabled: true; AccountNonExpired: true; credentialsNonExpired: true; AccountNonLocked: true; Granted Authorities: ROLE_USER; Credentials: [PROTECTED]; Authenticated: true; Details: null; Granted Authorities: ROLE_USER
2015-08-12 14:11:20 [http-apr-8080-exec-1] INFO TestFilter:25 - /createaccount
Редактировать
Это мое решение:
@RequestMapping(value = "/createaccount",method = RequestMethod.POST)
public String createAccount(@ModelAttribute User user,BindingResult result){
if (result.hasErrors()){
return "newaccount";
}
if(usersService.exists(user.getEmail())){
result.rejectValue("email","DuplicateKey.user.email");
logger.info("caught duplicate email");
return "newaccount";
}
user.setAuthority("ROLE_USER");
user.setEnabled(true);
usersService.create(user);
// perform login authentication
try {
UserDetails userDetails = userDetailsSvc.loadUserByUsername(user.getEmail());
logger.info(userDetails);
logger.info(userDetails.getAuthorities());
UsernamePasswordAuthenticationToken auth = new UsernamePasswordAuthenticationToken(userDetails, user.getPassword(), userDetails.getAuthorities());
// redirect into secured main page if authentication successful
if(auth.isAuthenticated()) {
logger.info("auth isAuthenticated");
SecurityContextHolder.getContext().setAuthentication(auth);
return "userlogin";
}
} catch (Exception e) {
logger.debug("Problem authenticating user" + user.getEmail(), e);
}
return "accountcreated";
}
Как вы заметили, я удалил authMgr.authenticate (авт) Я думаю, что это больше не нужно весной 4. И теперь пользователи автоматически регистрируются после заполнения регистрационной формы. , пожалуйста, исправьте меня, если я ошибаюсь.
Можете вы добавить свой файл конфигурации безопасности весны, пожалуйста? – fabballe