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

Java實(shí)現(xiàn)基于token認(rèn)證的方法示例

 更新時(shí)間:2019年08月02日 14:26:06   作者:程序員阿坤  
這篇文章主要介紹了Java實(shí)現(xiàn)基于token認(rèn)證的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

隨著互聯(lián)網(wǎng)的不斷發(fā)展,技術(shù)的迭代也非常之快。我們的用戶認(rèn)證也從剛開始的用戶名密碼轉(zhuǎn)變到基于cookie的session認(rèn)證,然而到了今天,這種認(rèn)證已經(jīng)不能滿足與我們的業(yè)務(wù)需求了(分布式,微服務(wù))。我們采用了另外一種認(rèn)證方式:基于token的認(rèn)證。

一、與cookie相比較的優(yōu)勢(shì):

1、支持跨域訪問,將token置于請(qǐng)求頭中,而cookie是不支持跨域訪問的;

2、無(wú)狀態(tài)化,服務(wù)端無(wú)需存儲(chǔ)token,只需要驗(yàn)證token信息是否正確即可,而session需要在服務(wù)端存儲(chǔ),一般是通過cookie中的sessionID在服務(wù)端查找對(duì)應(yīng)的session;

3、無(wú)需綁定到一個(gè)特殊的身份驗(yàn)證方案(傳統(tǒng)的用戶名密碼登陸),只需要生成的token是符合我們預(yù)期設(shè)定的即可;

4、更適用于移動(dòng)端(Android,iOS,小程序等等),像這種原生平臺(tái)不支持cookie,比如說微信小程序,每一次請(qǐng)求都是一次會(huì)話,當(dāng)然我們可以每次去手動(dòng)為他添加cookie,詳情請(qǐng)查看博主另一篇博客;

5、避免CSRF跨站偽造攻擊,還是因?yàn)椴灰蕾嘽ookie;

6、非常適用于RESTful API,這樣可以輕易與各種后端(java,.net,python......)相結(jié)合,去耦合

還有一些優(yōu)勢(shì)這里就不一一列舉了。

二、基于JWT的token認(rèn)證實(shí)現(xiàn)

JWT:JSON Web Token,其實(shí)token就是一段字符串,由三部分組成:Header,Payload,Signature。詳細(xì)情況請(qǐng)自行百度,現(xiàn)在,上代碼。

1、引入依賴,這里選用java-jwt,選擇其他的依賴也可以

2、實(shí)現(xiàn)簽名方法

設(shè)置15分鐘過期也是出于安全考慮,防止token被竊取,不過一般選擇基于token認(rèn)證,傳輸方式我們都應(yīng)該選擇https,這樣別人無(wú)法抓取到我們的請(qǐng)求信息。這個(gè)私鑰是非常重要的,加密解密都需要用到它,要設(shè)置的足夠復(fù)雜并且不能被盜取,我這里選用的是一串uuid,加密方式是HMAC256。

3、認(rèn)證

我這里演示的還是以傳統(tǒng)的用戶名密碼驗(yàn)證,驗(yàn)證通過發(fā)放token。

4、配置攔截器

實(shí)現(xiàn)HandleInterceptor,重寫preHandle方法,該方法是在每個(gè)請(qǐng)求之前觸發(fā)執(zhí)行,從request的頭里面取出token,這里我們統(tǒng)一了存放token的鍵為accessToken,驗(yàn)證通過,放行,驗(yàn)證不通過,返回認(rèn)證失敗信息。

5、設(shè)置攔截器

這里使用的是Spring的xml配置攔截器,放過認(rèn)證接口。

6、token解碼方法

7、測(cè)試

訪問攜帶token,請(qǐng)求成功。

未攜帶token或者token錯(cuò)誤,過期,返回認(rèn)證失敗信息。

8、獲取token里攜帶的信息

我們可以將一些常用的信息放入token中,比如用戶登陸信息,可以方便我們的使用

至此,一個(gè)簡(jiǎn)單的基于token認(rèn)證就實(shí)現(xiàn)了,下次我將shiro與JWT整合到一起。

git地址:https://github.com/qiaokun-sh/spring-token

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • MyBatis一級(jí)緩存與二級(jí)緩存原理與作用分析

    MyBatis一級(jí)緩存與二級(jí)緩存原理與作用分析

    mybatis-plus是一個(gè)Mybatis的增強(qiáng)工具,在Mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,為簡(jiǎn)化開發(fā)、提高效率而生,這篇文章帶你了解Mybatis的一級(jí)和二級(jí)緩存
    2022-12-12
  • 解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題

    解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題

    這篇文章主要介紹了解決SpringMVC項(xiàng)目連接RabbitMQ出錯(cuò)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Java 面向?qū)ο蠛头庋b全面梳理總結(jié)

    Java 面向?qū)ο蠛头庋b全面梳理總結(jié)

    面向?qū)ο竽耸荍ava語(yǔ)言的核心,是程序設(shè)計(jì)的思想,在面向?qū)ο蟪淌皆O(shè)計(jì)方法中,封裝(英語(yǔ):Encapsulation)是指一種將抽象性函式接口的實(shí)現(xiàn)細(xì)節(jié)部分包裝、隱藏起來的方法。封裝可以被認(rèn)為是一個(gè)保護(hù)屏障,防止該類的代碼和數(shù)據(jù)被外部類定義的代碼隨機(jī)訪問
    2021-10-10
  • SpringBoot整合Zookeeper詳細(xì)教程

    SpringBoot整合Zookeeper詳細(xì)教程

    Curator是Netflix公司開源的?套zookeeper客戶端框架,Curator是對(duì)Zookeeper?持最好的客戶端框架。Curator封裝了?部分Zookeeper的功能,?如Leader選舉、分布式鎖等,減少了技術(shù)?員在使?Zookeeper時(shí)的底層細(xì)節(jié)開發(fā)?作
    2022-12-12
  • JavaWeb簡(jiǎn)單用戶登錄注冊(cè)實(shí)例代碼(有驗(yàn)證碼)

    JavaWeb簡(jiǎn)單用戶登錄注冊(cè)實(shí)例代碼(有驗(yàn)證碼)

    這篇文章主要介紹了JavaWeb簡(jiǎn)單用戶登錄注冊(cè)實(shí)例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • mybatis TypeHandler注入spring的依賴方式

    mybatis TypeHandler注入spring的依賴方式

    這篇文章主要介紹了mybatis TypeHandler注入spring的依賴方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Spring AOP AspectJ使用及配置過程解析

    Spring AOP AspectJ使用及配置過程解析

    這篇文章主要介紹了Spring AOP AspectJ使用及配置過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 詳解SpringBoot+Dubbo集成ELK實(shí)戰(zhàn)

    詳解SpringBoot+Dubbo集成ELK實(shí)戰(zhàn)

    這篇文章主要介紹了詳解SpringBoot+Dubbo集成ELK實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • 利用Java異常機(jī)制實(shí)現(xiàn)模擬借書系統(tǒng)

    利用Java異常機(jī)制實(shí)現(xiàn)模擬借書系統(tǒng)

    這篇文章主要給大家介紹了利用Java異常機(jī)制實(shí)現(xiàn)模擬借書系統(tǒng)的相關(guān)資料,文中先對(duì)java異常機(jī)制進(jìn)行了簡(jiǎn)單介紹,而后通過示例代碼介紹了java語(yǔ)言是如何實(shí)現(xiàn)一個(gè)控制臺(tái)版的模擬借書系統(tǒng),需要的朋友可以參考學(xué)習(xí),一起來看看吧。
    2017-04-04
  • jenkins和sonar實(shí)現(xiàn)代碼檢測(cè)過程詳解

    jenkins和sonar實(shí)現(xiàn)代碼檢測(cè)過程詳解

    這篇文章主要介紹了jenkins和sonar實(shí)現(xiàn)代碼檢測(cè)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10

最新評(píng)論

深泽县| 扶绥县| 娄底市| 诏安县| 赣州市| 侯马市| 苍山县| 拉萨市| 留坝县| 慈利县| 深泽县| 仁布县| 忻州市| 项城市| 东方市| 天全县| 张家界市| 临朐县| 元谋县| 大安市| 吉安县| 卢氏县| 浦北县| 宣恩县| 安溪县| 汾西县| 临洮县| 娄底市| 高平市| 桓仁| 惠东县| 开封市| 左云县| 邳州市| 乌拉特中旗| 靖江市| 临泽县| 祁门县| 华亭县| 南澳县| 九寨沟县|