我的應用程序使用java servlets,jsp和tomcat 6.我喜歡實現會話ID更改並希望在登錄後將舊會話屬性複製到新會話。我們在這裏開始使用一點點的彈簧。 這是將此功能添加到10年前的應用程序中的最佳方式。會話ID更改和登錄後的屬性複製
3
A
回答
9
如果您使用Spring Security,框架默認會在登錄後更改會話ID。
@see Spring Security FAQ:
爲什麼會話ID的變化,當我通過Spring Security的認證?
使用默認配置,當用戶驗證並創建一個新會話並將會話數據傳送給它時,Spring Security使現有會話無效。目的是改變會話標識符以防止「會話固定」攻擊。你可以找到更多關於這個在網上和參考手冊
如果你不使用Spring(安全),你必須自己做。在這樣的位:
public class Login extends HttpServlet {
...
HttpSession session = request.getSession();
Map<String,Object> values = session.GetAll(); //This line is psydo code
//Use getValueNames() and a loop with getValue(String name);
// Kill the current session
session.invalidate();
HttpSession newSession = request.getSession(true);
newSession.putAllValues(values); //This line is psydo code
...
0
這可能有助於
Cookie cookie = new Cookie("JSESSIONID", null);
cookie.setPath("/");
cookie.setMaxAge(0);
response.addProperty(cookie);
1
session=request.getSession(true);
Enumeration keys = session.getAttributeNames();
HashMap<String,Object> hm=new HashMap<String,Object>();
while (keys.hasMoreElements())
{
String key = (String)keys.nextElement();
hm.put(key,session.getValue(key));
session.removeAttribute(key);
}
session.invalidate();
session=request.getSession(true);
for(Map.Entry m:hm.entrySet())
{
session.setAttribute((String)m.getKey(),m.getValue());
hm.remove(m);
}
+1
一些更多的解釋可以幫助人們清楚地理解 – Prasad 2016-12-31 06:46:19
相關問題
- 1. 登錄會話ID
- 2. 登錄後保留會話ID CakePHP
- 3. 要登錄後纔可查看登錄會話ID在笨
- 4. 通過Devise會話登錄更新用戶模型屬性
- 5. 登錄後會話TImeout?
- 6. 會話登錄控制
- 7. 從會話登錄的用戶ID
- 8. 如何複製記錄,只更改ID?
- 9. 會話ID值更改
- 10. 更改主題會話ID
- 11. 會話ID隨機更改
- 12. Facebook登錄不會更改爲'註銷'選項登錄後
- 13. 使用散列登錄會話ID
- 14. PHP登錄和會話
- 15. PHP和Oracle會話登錄
- 16. 會話名稱和會話ID更改時未設置
- 17. Django會話剛剛登錄後會間歇性消失
- 18. 會話登錄(鉻的後退箭頭)
- 19. 如何在Laravel 5.1中登錄後保留會話ID
- 20. Symfony 3 - 登錄後如何保持會話ID?
- 21. 恢復先前的會話的屬性
- 22. ajax post上的php會話ID更改
- 23. J2EE會話移動和會話複製
- 24. php登錄會話
- 25. vb登錄會話
- 26. ASP.net會話登錄
- 27. 登錄Telnet會話
- 28. Laravel登錄會話
- 29. Spring和Thymeleaf會話屬性
- 30. 登錄後ASP .NET會話重置嗎?
爲什麼你需要更改會話ID? – 2011-05-18 11:15:55
@ChristofferHammarström:登錄後查找會話id可防止會話劫持。 – Ralph 2011-05-18 11:20:24