時間:2021-12-27|瀏覽:451
當下用戶對產品的使用體驗要求在逐漸提高,從產品體驗方面來講,Token帶來的體驗更容易能讓用戶接受。那么Token都可以解決哪些問題呢?Token具有隨機性、不可預測性、時效性、無狀態、跨域等特點。 Token完全由應用管理,所以它可以避開同源策略Token可以避免CSRF攻擊Token可以是無狀態的,可以在多個服務間共享Token是在服務端產生的。如果前端使用用戶名/密碼向服務端請求認證,服務端認證成功,那么在服務端會返回Token給前端。前端可以在每次請求的時候帶上Token證明自己的合法地位。如果這個Token在服務端持久化(比如存入數據庫),那它就是一個永久的身份令牌。當然說到這里大家可能會想到,用服務器的session_id存儲到cookies中也能做到,為什么非要用Token呢?
網上有許多對比Token和session的文章,在此就不再贅述。其實小編覺得,如果是開發web應用的話,用兩者都可以,但如果是開發API接口,前后端分離,最好使用Token,因為session+cookies是基于web的,但針對API接口可能會考慮到移動端,app是沒有cookies和session的。Token的生命周期1)用戶未登錄用戶執行注冊/登錄→一旦基礎數據校驗成功,后端生成Token,并且Token包含此次注冊/登錄用戶的用戶名并通過JsonResponse返回給前端→前端拿到返回的Token后,存入瀏覽器本地存儲2)用戶每次訪問博客頁面從本地存儲中拿出Token→JS將Token 放入request的Authorization頭,發送http請求向后端索要數據→服務器接到前端請求(當前URL加了loging_check,并且請求方法在methods參數中),進行校驗→從requestAuthorization頭拿出Token→校驗→校驗不通過,返回前端異常代碼/校驗通過,正常執行對應的視圖函數→前端一旦接到關于Token的異常碼,則刪除本地存儲中的Token,且將用戶轉至登錄界面。
熱點:數據