最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2019年11月25日 08:28:46   作者:字母哥博客  
本文將介紹在Spring Security框架下如何實現(xiàn)用戶的"退出"logout的功能。本文通過實例代碼講解的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧

spring security 簡介

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

  • 認(rèn)證 (你是誰)
  • 授權(quán) (你能干什么)
  • 攻擊防護 (防止偽造身份)

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

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

一、logout最簡及最佳實踐

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

@Configuration
@EnableWebSecurity
public 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功能我們就完成了。實際上的核心代碼只有兩行。

二、默認(rèn)的logout做了什么?

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

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

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

三、個性化配置

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

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

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

四、LogoutSuccessHandler

如果上面的個性化配置,仍然滿足不了您的應(yīng)用需求??赡苣膽?yīng)用需要在logout的時候,做一些特殊動作,比如登錄時長計算,清理業(yè)務(wù)相關(guān)的數(shù)據(jù)等等。你可以通過實現(xiàn)LogoutSuccessHandler 接口來實現(xiàn)你的業(yè)務(wù)邏輯。

@Component
public class MyLogoutSuccessHandler implements LogoutSuccessHandler {
  
  @Override
  public void onLogoutSuccess(HttpServletRequest request, 
                HttpServletResponse response, 
                Authentication authentication) 
                throws IOException, ServletException {
    //這里書寫你自己的退出業(yè)務(wù)邏輯
    
    // 重定向到登錄頁
    response.sendRedirect("/login.html");
  }
}

然后進行配置使其生效,核心代碼就是一行l(wèi)ogoutSuccessHandler。注意logoutSuccessUrl不要與logoutSuccessHandler一起使用,否則logoutSuccessHandler將失效。

@Configuration
@EnableWebSecurity
public class SecSecurityConfig extends WebSecurityConfigurerAdapter {
  
@Autowired
  private MyLogoutSuccessHandler myLogoutSuccessHandler;

  @Override
  protected void configure(final HttpSecurity http) throws Exception {
     http.logout()
       .logoutUrl("/signout")
       //.logoutSuccessUrl(``"/aftersignout.html"``)
       .deleteCookies("JSESSIONID")
       //自定義logoutSuccessHandler
       .logoutSuccessHandler(myLogoutSuccessHandler);  
  }
}

總結(jié)

以上所述是小編給大家介紹的SpringSecurity退出功能實現(xiàn)的正確方式,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • javamail實現(xiàn)注冊激活郵件

    javamail實現(xiàn)注冊激活郵件

    這篇文章主要為大家詳細(xì)介紹了javamail實現(xiàn)注冊激活郵件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Java map.getOrDefault()方法的用法詳解

    Java map.getOrDefault()方法的用法詳解

    這篇文章主要介紹了Java map.getOrDefault()方法的用法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Spring Boot 集成Shiro的多realm配置過程

    Spring Boot 集成Shiro的多realm配置過程

    這篇文章主要介紹了Spring Boot 集成Shiro的多realm配置,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Java中圖像銳化操作的方法詳解

    Java中圖像銳化操作的方法詳解

    這篇文章主要給大家介紹了關(guān)于Java中圖像銳化操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Hibernate悲觀鎖和樂觀鎖實例詳解

    Hibernate悲觀鎖和樂觀鎖實例詳解

    這篇文章主要介紹了Hibernate悲觀鎖和樂觀鎖實例詳解,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • struts升級到2.5.2遇到的問題及解決方案(推薦)

    struts升級到2.5.2遇到的問題及解決方案(推薦)

    原來的版本是2.3.x,由于安全原因需要升級到2.5.2。但是在升級過程中遇到各種各樣的問題,下面小編給大家?guī)砹藄truts升級到2.5.2遇到的問題及解決方案,需要的朋友參考下吧
    2016-11-11
  • 如何解決java:找不到符號符號:類__(使用了lombok的注解)

    如何解決java:找不到符號符號:類__(使用了lombok的注解)

    在使用IntelliJ IDEA開發(fā)Java項目時,可能遇到通過@lombok注解自動生成get和set方法不生效的問題,解決這一問題需要幾個步驟,首先,確認(rèn)Lombok插件已在IDEA中安裝并啟用,其次,確保項目中已添加Lombok的依賴,對于Maven和Gradle項目
    2024-10-10
  • SpringBoot獲取application.properties文件中文亂碼問題及解決

    SpringBoot獲取application.properties文件中文亂碼問題及解決

    這篇文章主要介紹了SpringBoot獲取application.properties文件中文亂碼問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • springboot實現(xiàn)多模塊項目添加一新模塊

    springboot實現(xiàn)多模塊項目添加一新模塊

    這篇文章主要介紹了springboot實現(xiàn)多模塊項目添加一新模塊,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 關(guān)于SpringMVC中數(shù)據(jù)綁定@ModelAttribute注解的使用

    關(guān)于SpringMVC中數(shù)據(jù)綁定@ModelAttribute注解的使用

    這篇文章主要介紹了關(guān)于SpringMVC中數(shù)據(jù)綁定@ModelAttribute注解的使用,SpringMVC是一個基于Spring框架的Web框架,它提供了一種簡單、靈活的方式來開發(fā)Web應(yīng)用程序,在開發(fā)Web應(yīng)用程序時,我們需要將用戶提交的數(shù)據(jù)綁定到我們的Java對象上,需要的朋友可以參考下
    2023-07-07

最新評論

格尔木市| 于都县| 封丘县| 红河县| 西昌市| 余姚市| 遵义市| 关岭| 高安市| 昭平县| 徐汇区| 仁怀市| 麻阳| 镇安县| 鸡西市| 安阳市| 中方县| 通渭县| 五大连池市| 绵阳市| 元江| 信阳市| 贵州省| 六枝特区| 屏南县| 白银市| 武冈市| 永丰县| 桦南县| 和田县| 孝感市| 西藏| 沈丘县| 柳江县| 长垣县| 漠河县| 阳原县| 黄浦区| 调兵山市| 金华市| 池州市|