spring 中的会话管理是如何工作的?
How does session managment work in spring?
这个概念我实在看不懂。
看看我有什么:
@PostMapping("/login")
public ModelAndView login( @ModelAttribute UserLoginDTO userDto, HttpSession session) {
if (authenticateService.loginCheck(userDto.getUsername(), userDto.getPassword())) {
session.setAttribute("sessionid",123);
return new ModelAndView("redirect:/profile");
} else {
return new ModelAndView("signin","error","Invalid username or password combination, or the user does not exist.");
}
}
我已经为会话设置了一个sessionID。当用户浏览网站时,我怎么知道是同一个用户?
我是否必须将服务器端的 sessionID 存储在 ConcurrentHashMap 中?
当有页面切换时我应该这样做吗?
if (conHashMap[...] == session.getId()) {...}
else //redirect to login page
同样在注销时,我是否只是从哈希图中删除元素并调用 session.invalidate()?
或者是否有一种完全不使用 hashmap 的方法?
如果 ID 相同,您就知道会话来自同一用户,是的。
您最终可以在会话中存储信息。或者,您可以创建会话作用域的 bean:
@Component
@Scope(value="session")
public class MyComponent {
// ...
}
您将存储在此类对象中的所有内容只能由一个用户访问。
想通了。
失效后,浏览器将以新的会话访问该站点。新会话不会绑定 "sessionid" 属性。这样,我就可以确定哪个会话是有效的,而无需使用哈希图。
if (session.getAttribute("sessionid")==null){
return new ModelAndView("signin","error","Session expired, please log in again.");
这个概念我实在看不懂。 看看我有什么:
@PostMapping("/login")
public ModelAndView login( @ModelAttribute UserLoginDTO userDto, HttpSession session) {
if (authenticateService.loginCheck(userDto.getUsername(), userDto.getPassword())) {
session.setAttribute("sessionid",123);
return new ModelAndView("redirect:/profile");
} else {
return new ModelAndView("signin","error","Invalid username or password combination, or the user does not exist.");
}
}
我已经为会话设置了一个sessionID。当用户浏览网站时,我怎么知道是同一个用户?
我是否必须将服务器端的 sessionID 存储在 ConcurrentHashMap 中? 当有页面切换时我应该这样做吗?
if (conHashMap[...] == session.getId()) {...}
else //redirect to login page
同样在注销时,我是否只是从哈希图中删除元素并调用 session.invalidate()?
或者是否有一种完全不使用 hashmap 的方法?
如果 ID 相同,您就知道会话来自同一用户,是的。 您最终可以在会话中存储信息。或者,您可以创建会话作用域的 bean:
@Component
@Scope(value="session")
public class MyComponent {
// ...
}
您将存储在此类对象中的所有内容只能由一个用户访问。
想通了。
失效后,浏览器将以新的会话访问该站点。新会话不会绑定 "sessionid" 属性。这样,我就可以确定哪个会话是有效的,而无需使用哈希图。
if (session.getAttribute("sessionid")==null){
return new ModelAndView("signin","error","Session expired, please log in again.");