欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

5、避免CSRF跨站偽造攻擊,還是因為不依賴cookie;

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

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

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

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

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

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

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

3、認證

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

4、配置攔截器

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

5、設(shè)置攔截器

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

6、token解碼方法

7、測試

訪問攜帶token,請求成功。

未攜帶token或者token錯誤,過期,返回認證失敗信息。

8、獲取token里攜帶的信息

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

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

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

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

相關(guān)文章

  • SpringBoot構(gòu)造器注入循環(huán)依賴及解決方案

    SpringBoot構(gòu)造器注入循環(huán)依賴及解決方案

    這篇文章主要介紹了SpringBoot構(gòu)造器注入循環(huán)依賴及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • SpringBoot常用注解詳細整理

    SpringBoot常用注解詳細整理

    大家好,本篇文章主要講的是SpringBoot常用注解詳細整理,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Java 泛型有哪些好處詳解

    Java 泛型有哪些好處詳解

    這篇文章主要介紹了 Java 泛型有哪些好處詳解的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):算法

    java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):算法

    這篇文章主要介紹了Java的數(shù)據(jù)解構(gòu)基礎(chǔ),希望對廣大的程序愛好者有所幫助,同時祝大家有一個好成績,需要的朋友可以參考下,希望能給你帶來幫助
    2021-07-07
  • 最新評論