spring - 注册成功后自动登录

标签 spring spring-security

大家好 我想在 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/

相关文章:

java - 相同的值多次添加到数据库中

javascript - 在jsp页面中循环对象列表

spring - 如何使用 jest 客户端或传输客户端在 Elasticsearch 中使用三个表单字段进行搜索

spring-mvc - Spring Security 自定义注销

java - 创建 URI 模式匹配器以允许/禁止解码 JWT

java - 组件注释无法正常工作

java - JBoss - 如何在多数据库环境中设置默认数据源?

Spring Session 不适用于 Sitemesh

java - 在 Spring Security 中与 hasPermission 一起使用时,权限参数是否区分大小写?

java - spring 登录失败后获取用户名