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...