大家好 我想在 Spring 成功注册后进行自动登录 意义: 我有一个 protected 页面,需要登录才能访问它们 我想在注册后跳过登录页面并进行自动登录,以便用户可以看到 protected 页面,明白了吗? 我正在使用 Spring 3.0, Spring 安全 3.0.2 怎么做?
最佳答案
这可以通过以下方式使用spring security(半伪代码)来完成:
import org.springframework.security.web.savedrequest.RequestCache;
import org.springframework.security.web.savedrequest.SavedRequest;
@Controller
public class SignupController
{
@Autowired
RequestCache requestCache;
@Autowired
protected AuthenticationManager authenticationManager;
@RequestMapping(value = "/account/signup/", method = RequestMethod.POST)
public String createNewUser(@ModelAttribute("user") User user, BindingResult result, HttpServletRequest request, HttpServletResponse response) {
//After successfully Creating user
authenticateUserAndSetSession(user, request);
return "redirect:/home/";
}
private void authenticateUserAndSetSession(User user, HttpServletRequest request) {
String username = user.getUsername();
String password = user.getPassword();
UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
// generate session if one doesn't exist
request.getSession();
token.setDetails(new WebAuthenticationDetails(request));
Authentication authenticatedUser = authenticationManager.authenticate(token);
SecurityContextHolder.getContext().setAuthentication(authenticatedUser);
}
}
更新:只包含注册后如何创建 session
关于spring - 注册成功后自动登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3813028/