最近因為專案需求,需採用token的方式實現登入認證,而不再使用session的方式登入,因而採用springboot整合jwt生成token實現登入認證。
1.首先新增jwt所需jar包
2.接下來根據需要建乙個工具類jwtutils。
io.jsonwebtoken<
/groupid>
jjwt<
/artifactid>
0.7.0
<
/version>
<
/dependency>
這個工具類是通過jwt生成token以及對token的解析,這裡對token設定了過期時間,如果token解析不出或者說過期則會丟擲異常。/**
* jwt工具類
*/@configurationproperties
(prefix =
)@component
public class jwtutils
//過期時間
date expiredate = new date
(nowdate.
gettime()
+ v *
1000);
return jwts.
builder()
.claim
("systype"
,st.
gettype()
).setheaderparam
("typ"
,"jwt").
setid
(companyid)
.setsubject
(userid)
.setissuedat
(nowdate)
.setexpiration
(expiredate)
.signwith
(signaturealgorithm.hs512, secret)
.compact()
;}/** * 解析token
*/public claims getclaimbytoken
(string token)
catch (exception e)
}/**
* token是否過期
* @return true:過期
*/public boolean istokenexpired
(date expiration)
public string getsecret()
public void
setsecret
(string secret)
public long
getexpire()
public void
setexpire
(long expire)
public string getheader()
public void
setheader
(string header)
3.工具類寫好後,可以在登入時驗證完登入密碼生成token並返回給前端。(
"登入成功");
}4.當使用者請求介面時會在header中攜帶token,後端會對所有介面在前置***進行攔截,作用是對拿到的token進行解析,如果解析失敗,會丟擲signatureexception異常,如果解析成功,則不會攔截。
}5.可以對jwt進行全域性配置。
jwt:
# 加密秘鑰
secret: dfjlaer***
****
*# token有效時長,24小時,單位秒
expire:
86400
header: token`在這裡插入**片`
總結:
1.因為jwt生成token的無狀態性,以及便於傳輸,構成非常簡單,位元組占用很小,它不需要在服務端儲存
會話資訊, 所以它易於應用的擴充套件。
2.但一旦拿到訪問的token,就可直接訪問到伺服器,所以對於私鑰的保護非常重要。
基於restframework進行token驗證
一般情況下,進入到web 主頁都需要進行token或者其它驗證,不能在沒有登入的情況下可以檢視主頁的內容,在使用者輸入使用者名稱密碼後,進行校驗成功,後台會返回乙個token,用於用於下次訪問主頁或其它頁面進行使用者認證,一旦認證成功就可以訪問了。1 使用者獲取token 使用者向後台api傳送使用...
基於SpringBoot開發
使用idea配置springboot專案 專案結構 而 configuration 經常與 bean 組合使用,使用這兩個註解就可以建立乙個簡單的spring 配置類,可以用來替代相應的xml 配置檔案。enableautocon figuration 能夠自動配置spring 的上下文,猜測和配置...
spring security實現的token授權
在我的使用者密碼授權文章裡介紹了spring security的工作過程,不了解的同學,可以先看看使用者密碼授權這篇文章,在 使用者密碼授權模式裡,主要是通過乙個登陸頁進行授權,然後把授權物件寫到session裡,它主要用在mvc框架裡,而對於webapi來說,一般不會採用這種方式,對於webapi...