1
A
回答
4
,最可靠的辦法是自定義Spring Security filter chain當成功登錄時保存時間戳在用戶的會話。然後你可以像訪問任何會話屬性一樣訪問它。
1
根據文檔,您可以將add your own filters添加到Spring Security過濾器鏈中。
如果您使用http/form-login
或BasicAuthenticationFilter
,在http/http-basic
的情況下,您可以在UsernamePasswordAuthenticationFilter
之後添加過濾器,因此我們保證該會話已被創建。
要涵蓋兩者,您可以在最後一個之後添加過濾器,並將信息添加到會話中。
聲明你的過濾豆:
<bean id="myFilter" class="com.MyFilter"/>
它加入連鎖,BasicAuthenticationFilter
之後:
<http>
<custom-filter ref="myFilter" after="BASIC_AUTH_FILTER"/>
...
你doFilter
方法應該是這樣:
private static final String LOGGED_TIME_KEY = "LOGGED_TIME";
@Override
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null && authentication.isAuthenticated()) {
HttpSession session = request.getSession(false);
if (session != null && session.getAttribute(LOGGED_TIME_KEY) == null) {
session.setAttribute(LOGGED_TIME_KEY, new Date());
}
}
chain.doFilter(req, res);
}
請記住,您可以使用其他掛鉤。您可以將其添加到您的AuthenticationProvider。
編輯:
還有一個更簡單的方法來做到這一點,如果你正在使用form-login
。
您可以使用自定義AuthenticationSuccessHandler
。要定義它,請更新您的form-login
標記,並添加屬性authentication-success-handler-ref
。
相關問題
- 1. 無法使用彈簧安全登錄
- 2. 無法使用彈簧安全登錄
- 3. 鏈接使用彈簧安全登錄
- 4. 彈簧安全使用AJAX登錄時顯示403錯誤
- 5. 登錄時在彈簧安全中更改用戶名
- 6. 彈簧安全打開彈出登錄
- 7. 彈簧安全錯誤登錄用戶
- 8. 用亞馬遜登錄彈簧安全
- 9. 顯示登錄用戶彈簧安全
- 10. 如何成功登錄(不帶彈簧安全)
- 11. 沒有獲得彈簧安全自動生成登錄頁
- 12. 如何使用angularjs登錄彈簧安全
- 13. Angular2如何使用彈簧安全登錄並進行其他安全調用
- 14. 休眠和mysql登錄彈簧安全
- 15. 彈簧安全單點登錄
- 16. 彈簧安全自動登錄
- 17. 角度2登錄與彈簧安全
- 18. 彈簧安全jsf在成功登錄後不會重定向
- 19. 彈簧安全 - 請檢查登錄失敗時記住我
- 20. ui.router +彈簧安全 - 根據需要登錄時重定向
- 21. 彈簧安全:登錄時更改語言環境
- 22. 如何禁用彈簧應用程序登錄安全?
- 23. ajax登錄彈簧webMVC和彈簧安全
- 24. 彈簧安全2.0.7和彈簧2.5的登錄表單問題
- 25. 彈簧mvc +彈簧安全,404登錄後
- 26. 彈簧安全登錄活動目錄不能正常工作
- 27. 獲取已登錄用戶的Grails彈簧安全性
- 28. 如何在登錄表單中添加彈簧安全
- 29. 成功登錄後彈簧安全不重定向
- 30. 成功登錄彈簧安全後發送請求