国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

spring security登錄、登出、認證異常返回值的自定義實現

mushang / 2195人閱讀

摘要:在整個學習過程中,我最關心的內容有號幾點,其中一點是前后端分離的情況下如何不跳轉頁面而是返回需要的返回值。登錄成功,不跳轉頁面,返回自定義返回值在官方文檔第節,有這么一段描述要進一步控制目標,可以使用屬性作為的替代。

在整個學習過程中,我最關心的內容有號幾點,其中一點是【前后端分離的情況下如何不跳轉頁面而是返回需要的返回值】。
下面就說一下學習結果,以xml配置位李。

登錄成功,不跳轉頁面,返回自定義返回值

在spring官方文檔5.0.12.RELEASE第6.2.3節,有這么一段描述:

要進一步控制目標,可以使用authentication-success-handler-ref屬性作為default-target-url的替代。 引用的bean應該是AuthenticationSuccessHandler的一個實例。 您可以在Core Filters一章以及命名空間附錄中找到更多相關信息,以及有關如何在身份驗證失敗時自定義流的信息。

剛開始的時候我沒有注意到這個內容,后來看了spring-security-5.0.xsd文件才找到這個配置。
在xsd文件中,對這個屬性是這樣描述的:

 
         
            
            引用應該用于處理a的AuthenticationSuccessHandler bean成功的認證請求。 不應與之配合使用default-target-url(或always-use-default-target-url)應始終作為實現處理導航到后續目的地
                
         
      

所以實現一個AuthenticationSuccessHandler的實現類:

public class LoginAuthenticationSuccessHandler implements AuthenticationSuccessHandler {

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {

        System.out.println("===========登陸成功================");
        PrintWriter printWriter = response.getWriter();
        Map msgMap = new HashMap<>();
        msgMap.put("result", "0");
        msgMap.put("msg", "登錄成功");
        printWriter.write(new Gson().toJson(msgMap));
        printWriter.flush();
        printWriter.close();
    }
}

配置xml:

        
              
              
              
              
       
       ......
       

測試結果:

登出成功,不跳轉頁面,返回自定義返回值

在spring官方文檔5.0.12.RELEASE第6.2.4 logout handling節,提到這個內容:

logout元素通過導航到特定URL添加了對注銷的支持。 默認的注銷URL是/logout,但您可以使用logout-url屬性將其設置為其他內容。 有關其他可用屬性的更多信息,請參見命名空間附錄。

查找到對應的命名空間章節43.1.26 ,其中關于配置的說明:

//這個說明 success-handler-ref
success-handler-ref May be used to supply an instance of LogoutSuccessHandler which will be invoked to control the navigation after logging out.

根據說明需要實現LogoutSuccessHandler接口。

實現一個LogoutSuccessHandler的實現類:

public class MyLogoutSuccessHandler implements LogoutSuccessHandler {
    @Override
    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {

        System.out.println("===========登出成功================");
        PrintWriter printWriter = response.getWriter();
        response.setHeader("Content-Type", "application/json;charset=utf8");
        Map msgMap = new HashMap<>();
        msgMap.put("result", "0");
        msgMap.put("msg", "退出成功");
        printWriter.write(new Gson().toJson(msgMap));
        printWriter.flush();
        printWriter.close();
    }
}

配置xml:


       
              
              
              
              
       

測試:

未登錄時,如果調用接口,不報403或401錯,返回自定義結果

在43.1.21 節中,提到了這樣一個配置authentication-failure-handler-ref :

authentication-failure-handler-ref 可用作authentication-failure-url的替代方法,使您可以在身份驗證失敗后完全控制導航流。 該值應該是應用程序上下文中AuthenticationFailureHandler bean的名稱。

xsd中的說明:

引用應該用于處理失敗的AuthenticationFailureHandler bean驗證請求。 不應與authentication-failure-url結合使用, 因為實現應始終處理導航到后續目的地

測試配置基本和登錄成功一致,不啰嗦了。

總結

這樣就實現了基本的前后端調用要求,避免了路徑跳轉。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75651.html

相關文章

  • Spring Security 進階-細節總結

    摘要:但是我們最好不要在里面對他進行處理,而是放到配置的權限異常來處理。記得配置登錄認證前和過程中的一些請求不需要身份認證。登錄認證失敗不能直接拋出錯誤,需要向前端響應異常。 關于 Spring Security 的學習已經告一段落了,剛開始接觸該安全框架感覺很迷茫,總覺得沒有 Shiro 靈活,到后來的深入學習和探究才發現它非常強大。簡單快速集成,基本不用寫任何代碼,拓展起來也非常靈活和強...

    LinkedME2016 評論0 收藏0
  • Spring Security 進階-原理篇

    摘要:過濾器基本都是通過過濾器來完成配置的身份認證權限認證以及登出。密碼比對通過進行密碼比對注可自定義通過獲取通過獲取生成身份認證通過后最終返回的記錄認證的身份信息 知彼知己方能百戰百勝,用 Spring Security 來滿足我們的需求最好了解其原理,這樣才能隨意拓展,本篇文章主要記錄 Spring Security 的基本運行流程。 過濾器 Spring Security 基本都是通過...

    android_c 評論0 收藏0
  • spring security安全防護

    摘要:發現無效后,會返回一個的訪問拒絕,不過可以通過配置類處理異常來定制行為。惡意用戶可能提交一個有效的文件,并使用它執行攻擊。默認是禁止進行嗅探的。 前言 xss攻擊(跨站腳本攻擊):攻擊者在頁面里插入惡意腳本代碼,用戶瀏覽該頁面時,腳本代碼就會執行,達到攻擊者的目的。原理就是:攻擊者對含有漏洞的服務器注入惡意代碼,引誘用戶瀏覽受到攻擊的服務器,并打開相關頁面,執行惡意代碼。xss攻擊方式...

    tuantuan 評論0 收藏0
  • [譯]Spring入門 - Web應用程序安全

    摘要:一旦最基本的應用創建好了,你可以給他加上安全防護。一旦成功登出了,我們的應用程序重定向到到并顯示相應的登陸成功的消息。這標記該應用程序是一個應用程序,并激活一些關鍵行為,比如創建一個。一旦應用程序啟動,用瀏覽器訪問。 原網頁 https://spring.io/guides/gs/securing-web/ 本指南將引導您完成創建一個資源由Spring Security的保護的一個簡單...

    AlexTuan 評論0 收藏0

發表評論

0條評論

mushang

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<