想必大家都知道對於用於驗證成功之後,對於用戶信息的識別不在通過數據庫識別,而是通過簽名來驗證用戶是否之前登陸過的。
與cookie相比較的優勢:
1、支持跨域訪問,將token置於請求頭中,而cookie是不支持跨域訪問的;
2、無狀態化,服務端無需存儲token,只需要驗證token信息是否正確即可,而session需要在服務端存儲,一般是通過cookie中的sessionID在服務端查找對應的session;
3、無需綁定到一個特殊的身份驗證方案(傳統的用戶名密碼登陸),只需要生成的token是符合我們預期設定的即可;
4、更適用於移動端(Android,iOS,小程序等等),像這種原生平臺不支持cookie,比如說微信小程序,每一次請求都是一次會話,當然我們可以每次去手動爲他添加cookie,詳情請查看博主另一篇博客;
5、避免CSRF跨站僞造攻擊,還是因爲不依賴cookie;
6、非常適用於RESTful API,這樣可以輕易與各種後端(java,.net,python......)相結合,去耦合
本博客是基於jwt的token認證的簡單實現:
1、加入jwt的依賴
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.3.0</version>
</dependency>
2、創建一個TokenUtil類,聲明2個變量過期時間和token祕鑰(UUID可能會更好,我是自己隨便輸的),token祕鑰用於後面解密
3、加密
4、解密。該方法的參數token是加密方法的返回值
5、登錄接口
6、判斷用戶是否登錄接口
最後使用postman進行測試就ok了,postman的安裝和使用請看我另外一篇文章