什么是token
token就是令牌,前后端进行鉴权的一种有效形式,比传统的 session 鉴权更加方便,简单来说:当用户首次登陆时,网站会给你一张“门卡”,以后你可以凭借门卡直接进入,而无需再次申请。但一段时间之后门卡实效,你需要再到前台充磁,这里的门卡就是 token
那么它的用途有哪些呢?
进行跨域,简单操作,特别适合前后端分离项目。
补充:多数情况下,token 作为一种令牌,都是在服务器端生成,生成的方法很多,从简单点的对时间或者id 或者两者混合起来进行 哈希运算 的值到自己设计更复杂的算法都可以,生成的目的是为了给前端下一次通信时使用这个token 作为令牌,当作为一个请求资源的许可的标识,而服务器则会视这个 token 在一段时间内都是有效的,并且还可以额外看情况加上是否是同一个 ip 之类的其它限制,从而防止某种资源被非法访问。
偶有前端(包括本地客户端或者app)生成 token 的情况是已经约定好了一个好的加密机制,服务器可以信任客户端的这个输入的情况下可以由前端或者客户端生成。
token 的作用
1.token的由来
首先在token之前前后端判断身份标识用session,基于cookie来实现。最新的浏览器渐渐的淘汰了cookie了,所以这种形式慢慢就没了,于是大家换了一种校验形式,使用token.
2.token里的值都是什么
token是由后端程序生成,里面一般封装了用户的id,用户本次登录的ip地址,过期的时间,可能还有一些其他后端加入的字符等。 { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTkyLCJ1c2VybmFtZSI6IuiKseWNt-WEvyIsImlzbG9naW4iOjEsImlhdCI6MTY1MzQ1OTY1MywiZXhwIjoxNjUzNDYzMjUzfQ.xIQHcNy8B_cNGgfZTcj4m2aM3sG_ZlNa-zLDsR9DPWk" } token在后端程序里可以解密,后端根据数据进行校验用户是否合法。
3.利用token做记住密码:一定不是把密码存本地
很有网站有记住我【3-7天】
本次登录勾选了记住我3天,当我登录的时候我需要给接口一个额外的参数,就是记住我并且保留3天,后端就会在token中加入一个3天过期的时间。
当我们登录成功后,我们需要把token存入本地,并且把记住我那个标记也存。
当我们退出登录时,先判断本地那个记住我标识是否为true,如果为true,则token不删除。
下一次打开登录页面,从本地读取记住我的标识,如果时true则把密码框给一个假的****,提交登录的时候,就把token上次就可以了。
有哪些场景需要登录
进入客服的时候,要先判断是否登录
进入订单的时候,需要
购物车的时候,需要 所以登录成功后,应该跳转回最开始被拦截的地方
项目中的权限管理:【自定义指令控制、路由守卫】
如果项目中很多地方都需要权限管理,比如路由的跳转前需要判断,比如事件前需要判断。 自定义指令去实现。 指令是用来控制元素的,所以我们使用自定义指令来解决。