簡體   English   中英

春季會議管理如何工作?

[英]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()?

還是有一種完全不使用哈希圖的方式?

如果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.");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM