SpringBoot實現基於token的登入驗證

2021-10-10 00:16:36 字數 2322 閱讀 2679

springboot實現基於token的登入驗證

基於token的登入驗證實現原理:客戶端通過使用者名稱和密碼呼叫登入介面,當驗證資料庫中存在該使用者後,將使用者的資訊按照token的生成規則,生成乙個字串token,返回給客戶端,客戶端在呼叫其他介面的時候,需要在請求頭上帶上token,來驗證登入資訊

demo實現**如下:

(因為除登入介面外,其他介面每次都需要驗證token資訊,所以將驗證token資訊的部分放在了過濾器裡面)

1.匯入jwt(json web token)依賴

io.jsonwebtoken<

/groupid>

jjwt<

/artifactid>

0.6.0

<

/version>

<

/dependency>

2.jwt工具類,包括token的生成和驗證(加密秘鑰先自己隨便寫了乙個)

@component

public

class

jwtuitls

/** * 驗證token是否有效

* @param token 請求頭中攜帶的token

* @return token驗證結果 2-token過期;1-token認證通過;0-token認證失敗

*/public

intverify

(string token)

catch

(expiredjwtexception e)

//從token中獲取使用者id,查詢該id的使用者是否存在,存在則token驗證通過

string id = claims.

getid()

; user user = userservice.

selectuserbyid

(id);if

(user != null)

else

}}

3.過濾器,實現filter介面

@override

public

void

dofilter

(servletrequest servletrequest, servletresponse servletresponse, filterchain filterchain)

throws ioexception, servletexception

else

else

if(verify ==0)

}else

if(verify ==1)

}else

} jsonobject jsonobject =

newjsonobject

(map)

; servletresponse.

setcontenttype()

;//設定響應的編碼

servletresponse.

setcharacterencoding

("utf-8");

//響應

printwriter pw=servletresponse.

getwriter()

; pw.

write

(jsonobject.

tostring()

);pw.

flush()

; pw.

close();}}

4.使用postman測試結果如下

(1)呼叫login介面,返回token

(2)呼叫查詢使用者介面,在請求頭中加入token

(3)不攜帶token,呼叫查詢介面

(4)token過期後,呼叫查詢介面

以上就是乙個簡單的token登入機制

token登入機制的好處:不需要將登入資訊儲存在資料庫或session中

token中還可以攜帶更多的使用者資訊,包括許可權等

springboot基於token實現登入認證

最近因為專案需求,需採用token的方式實現登入認證,而不再使用session的方式登入,因而採用springboot整合jwt生成token實現登入認證。1.首先新增jwt所需jar包 io.jsonwebtoken groupid jjwt artifactid 0.7.0 version de...

實現基於springboot的RPC框架(序)

rpc框架大家或多或少都用過,出自於阿里系的就有dubbo,hsf,sofarpc等。但是,要深入理解rpc的原理卻不容易,其中光是核心部分,就涉及到動態 netty,服務註冊與發現,序列化,多執行緒等等。筆者為了弄清楚rpc框架的大致呼叫實現原理,自己造了個輪子 zrpc.首先,筆者寫這個rpc框...

基於springBoot實現請求攔截功能

1 定義乙個過濾器的類authenticationfilter 繼承handlerinterceptoradapter 類 2 右鍵generate 重寫父類的方法prehandle 如果返回false則不能訪問,返回true則可以訪問 3 定義令牌的請求頭 請求帶上令牌,authorization...