国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 幫助中心 > 正文

SpringSecurity退出功能實現的正確方式(推薦)

2024-07-09 22:41:52
字體:
來源:轉載
供稿:網友

spring security 簡介

        spring security 的核心功能主要包括:

認證 (你是誰) 授權 (你能干什么) 攻擊防護 (防止偽造身份)

     其核心就是一組過濾器鏈,項目啟動后將會自動配置。最核心的就是 Basic Authentication Filter 用來認證用戶的身份,一個在spring security中一種過濾器處理一種認證方式。

本文將介紹在Spring Security框架下如何實現用戶的"退出"logout的功能。其實這是一個非常簡單的功能,我見過很多的程序員在使用了Spring Security之后,仍然去自己寫controller方法實現logout功能,這種做法就好像耕地,你有機械設備你不用,你非要用牛。

一、logout最簡及最佳實踐

其實使用Spring Security進行logout非常簡單,只需要在spring Security配置類配置項上加上這樣一行代碼:http.logout()。關于spring Security配置類的其他很多實現、如:HttpBasic模式、formLogin模式、自定義登錄驗證結果、使用權限表達式、session會話管理,在本號的之前的文章已經都寫過了。本節的核心內容就是在原有配置的基礎上,加上這樣一行代碼:http.logout()。

@Configuration@EnableWebSecuritypublic class SecSecurityConfig extends WebSecurityConfigurerAdapter {  @Override  protected void configure(final HttpSecurity http) throws Exception {    http.logout();  }}

加上logout配置之后,在你的“退出”按鈕上使用/logtou作為請求登出的路徑。

<a href="/logout" rel="external nofollow" >退出</a>

logout功能我們就完成了。實際上的核心代碼只有兩行。

二、默認的logout做了什么?

雖然我們簡簡單單的實現了logout功能,是不是還不足夠放心?我們下面就來看一下Spring Security默認在logout過程中幫我們做了哪些動作。

當前session失效,即:logout的核心需求,session失效就是訪問權限的回收。 刪除當前用戶的 remember-me“記住我”功能信息 clear清除當前的 SecurityContext 重定向到登錄頁面,loginPage配置項指定的頁面

通常對于一個應用來講,以上動作就是logout功能所需要具備的功能了。

三、個性化配置

雖然Spring Security默認使用了/logout作為退出處理請求路徑,登錄頁面作為退出之后的跳轉頁面。這符合絕大多數的應用的開發邏輯,但有的時候我們需要一些個性化設置,如下:

 http.logout()   .logoutUrl("/signout")   .logoutSuccessUrl("/aftersignout.html")   .deleteCookies("JSESSIONID")

通過指定logoutUrl配置改變退出請求的默認路徑,當然html退出按鈕的請求url也要修改 通過指定logoutSuccessUrl配置,來顯式指定退出之后的跳轉頁面 還可以使用deleteCookies刪除指定的cookie,參數為cookie的名稱

四、LogoutSuccessHandler

如果上面的個性化配置,仍然滿足不了您的應用需求。可能您的應用需要在logout的時候,做一些特殊動作,比如登錄時長計算,清理業務相關的數據等等。你可以通過實現LogoutSuccessHandler 接口來實現你的業務邏輯。

@Componentpublic class MyLogoutSuccessHandler implements LogoutSuccessHandler {    @Override  public void onLogoutSuccess(HttpServletRequest request,                 HttpServletResponse response,                 Authentication authentication)                 throws IOException, ServletException {    //這里書寫你自己的退出業務邏輯        // 重定向到登錄頁    response.sendRedirect("/login.html");  }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 石景山区| 华坪县| 永定县| 方山县| 重庆市| 秀山| 潼关县| 宾阳县| 商洛市| 伊川县| 博白县| 拜泉县| 旅游| 策勒县| 游戏| 津南区| 铁力市| 锡林浩特市| 彭水| 龙陵县| 江陵县| 汉川市| 江北区| 德阳市| 册亨县| 宿州市| 黔江区| 门头沟区| 应城市| 屏山县| 许昌市| 汤阴县| 洛隆县| 南和县| 水城县| 澄迈县| 贵南县| 洪雅县| 鄢陵县| 全州县| 鄂托克前旗|