81,120
社区成员




m
前端的token可以存在vuex,localStorage,cookie推荐localStorage,cookie,可以实现免密登录,记住密码等功能,后端的话存在Redis里面,每次请求的时候吧token放在请求头里,后端接收到token之后在Redis里进行查询,为什么不存在mysql里面,因为Redis是基于内存存储的,存储的是k-v格式的数据,操作数据比mysql快,而且还能设置token的过期时间,有了token就不用频繁的去执行sql语句去判断用户角色了。再讲一下为什么现在都用token而不用session了,因为通常session是存储在内存中的,每个用户通过认证之后都会将session数据保存在服务器的内存中,而当用户量增大时,服务器的会压力增大,再一个session是基于cookie进行用户识别的, cookie如果被截获,用户就会很容易受到跨站请求伪造的攻击。然后现在项目基本都是微服务,如果搭建了多个服务器,虽然每个服务器都执行的是同样的业务逻辑,但是session数据是保存在内存中的(不是共享的),用户第一次访问的是服务器1,当用户再次请求时可能访问的是另外一台服务器2,服务器2获取不到session信息,就判定用户没有登陆过。