成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

spring security登錄、登出、認(rèn)證異常返回值的自定義實(shí)現(xiàn)

mushang / 2208人閱讀

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

在整個(gè)學(xué)習(xí)過程中,我最關(guān)心的內(nèi)容有號幾點(diǎn),其中一點(diǎn)是【前后端分離的情況下如何不跳轉(zhuǎn)頁面而是返回需要的返回值】。
下面就說一下學(xué)習(xí)結(jié)果,以xml配置位李。

登錄成功,不跳轉(zhuǎn)頁面,返回自定義返回值

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

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

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

 
         
            
            引用應(yīng)該用于處理a的AuthenticationSuccessHandler bean成功的認(rèn)證請求。 不應(yīng)與之配合使用default-target-url(或always-use-default-target-url)應(yīng)始終作為實(shí)現(xiàn)處理導(dǎo)航到后續(xù)目的地
                
         
      

所以實(shí)現(xiàn)一個(gè)AuthenticationSuccessHandler的實(shí)現(xiàn)類:

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:

        
              
              
              
              
       
       ......
       

測試結(jié)果:

登出成功,不跳轉(zhuǎn)頁面,返回自定義返回值

在spring官方文檔5.0.12.RELEASE第6.2.4 logout handling節(jié),提到這個(gè)內(nèi)容:

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

查找到對應(yīng)的命名空間章節(jié)43.1.26 ,其中關(guān)于配置的說明:

//這個(gè)說明 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.

根據(jù)說明需要實(shí)現(xiàn)LogoutSuccessHandler接口。

實(shí)現(xiàn)一個(gè)LogoutSuccessHandler的實(shí)現(xiàn)類:

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:


       
              
              
              
              
       

測試:

未登錄時(shí),如果調(diào)用接口,不報(bào)403或401錯(cuò),返回自定義結(jié)果

在43.1.21 節(jié)中,提到了這樣一個(gè)配置authentication-failure-handler-ref :

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

xsd中的說明:

引用應(yīng)該用于處理失敗的AuthenticationFailureHandler bean驗(yàn)證請求。 不應(yīng)與authentication-failure-url結(jié)合使用, 因?yàn)閷?shí)現(xiàn)應(yīng)始終處理導(dǎo)航到后續(xù)目的地

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

總結(jié)

這樣就實(shí)現(xiàn)了基本的前后端調(diào)用要求,避免了路徑跳轉(zhuǎn)。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/75651.html

相關(guān)文章

  • Spring Security 進(jìn)階-細(xì)節(jié)總結(jié)

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

    LinkedME2016 評論0 收藏0
  • Spring Security 進(jìn)階-原理篇

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

    android_c 評論0 收藏0
  • spring security安全防護(hù)

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

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

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

    AlexTuan 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<