最近因為專案需求,需採用token的方式實現登入認證,而不再使用session的方式登入,因而採用springboot整合jwt生成token實現登入認證。
1.首先新增jwt所需jar包
io.jsonwebtoken<
/groupid>
jjwt<
/artifactid>
0.7.0
<
/version>
<
/dependency>
2.接下來根據需要建乙個工具類jwtutils。
/**
* 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)
這個工具類是通過jwt生成token以及對token的解析,這裡對token設定了過期時間,如果token解析不出或者說過期則會丟擲異常。
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...