一哆姻、驗證登錄
????????前后端分離項目進行賬戶登錄認證及授權宣增,單單shiro并不能滿足需求,因此引入jwt進行用戶身份判定矛缨。身份判定方式有多種爹脾,而jwt是利用服務端生成的token令牌進行判定,實現服務端無狀態(tài)登錄模式劳景,且避開數據庫存儲帶來的消耗誉简。
二、token與jwt
? ? ? ? token是一個加密的令牌盟广,包含三個部分闷串,用戶唯一標識、當前時間戳和簽名筋量。而jwt利用token形成header烹吵,payload,signature三個部分組成一串字符串桨武。其中加密方式和過期時間可以自己定義肋拔。
三、實例
? ? ? ? 首先創(chuàng)建JWTUtil工具類呀酸,設置jwt的加密方式和過期時間凉蜂,createToken(參數)生成token,參數可以為用戶的多個信息性誉,verify(token, 參數)校驗token窿吩,還可以根據信息存放的字段名從token中獲取數據。
????????創(chuàng)建realm错览,該realm作用于shiro纫雁,定義用戶認證和授權,認證時首先檢測token是否存在及是否有效倾哺,無效則攔截該請求轧邪。
????????創(chuàng)建JWTFilter攔截類刽脖,攔截非法的token,并可以在這里設置跨域請求忌愚,因為當請求進來時首先需要進過該攔截器的攔截曲管。
? ? ? ? 創(chuàng)建shiroFilter攔截類,在其中注入jwt攔截器菜循,使jwt攔截器起作用并讓請求先經過jwt攔截器的攔截翘地,再進行請求的shiro攔截。(shiro攔截器中需要關閉shiro自帶的session)