时间:2021-12-27|浏览:328
当下用户对产品的使用体验要求在逐渐提高,从产品体验方面来讲,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,且将用户转至登录界面。
热点:数据