如何在spring boot中设置session属性

时间:2018-03-17 08:13:13

标签: java spring-boot

我想使用用户发送的名称设置会话属性。用户将首先登录。当他登录时,我希望他的用户名将设置为会话属性。

我该怎么办? 这是我的控制器

@GetMapping("/login")
public String login()
{
    return "Login";
}

@PostMapping("/loginCheck")
public String checkLogin(@ModelAttribute("users") Users user) {
    if(userService.checkUser(user)) {
        return "redirect:/"+user.getUsername()+"/";
    }
    else 
        return "Login";
}

@PostMapping("/signup")
public ModelAndView createuser(@ModelAttribute("users") Users user) {
    if(userService.checkUser(user)) {
        return new ModelAndView("Login");
    }
    else {
        userService.adduser(user);
        return new ModelAndView("Login");
    }
}

现在我如何将用户名设置为我在user.getUsername()

中获得的会话

2 个答案:

答案 0 :(得分:1)

在SpringMVC中,您可以通过将HttpSession作为参数添加到方法中来自动注入HttpSession。所以,你登录可能类似于:

@GetMapping("/login")
public String login(@ModelAttribute("users") Users user, HttpSession session)
{
    if(userService.authUser(user)) { //Made this method up
        session.setAttribute("username", user.getUsername());
        view.setViewName("homepage"); //Made up view
    }
    else{
        return new ModelAndView("Login");
    }
}

答案 1 :(得分:0)

@Autowired
ObjectFactory<HttpSession> httpSessionFactory;
.
.
.
HttpSession session = httpSessionFactory.getObject();

Works good. Thanks to this post.