前后端分离中 token认证的问题

提问 未结 7 236
肆意丶心
悬赏:20积分
版本:renren-cloud 浏览器:
为什么在每一次请求时,都会进行excuteLogin操作,再进行一次登录,而不是直接返回true? img[//cdn.renren.io/5c5f4201907081959207088.png] 这样会造成每一次的请求都会访问doGetAuthenticationInfo,进行很多DB操作,这样的意义是什么? 如果说要认证token是否过期,可以直接在onAccessDenied中进行认证。 img[//cdn.renren.io/c90cf201907082001466654.png] 而在登录时却没有进行doGetAuthenticationInfo操作,前后端分离项目中,登录时并没有使用subject.login进行登录,是不是意味着,doGetAuthenticationInfo方法并没有实际存在的意义? ps:我知道可以将DB换成缓存,但是现在的问题是搞不懂为何每次都要重新登录验证
回帖
  • 无状态,是这样的
    0 回复
  • 肆意丶心
    2019-07-08
    @Mark 是不是这样理解 这样做的目的是将user信息存储在subject中 每次其他地方获取user信息的时候从subject中获取? 那么能不能将获取user信息的方式改成通过token获取?这样就不用每次都那么多DB操作了,是否可行?
    0 回复
  • 肆意丶心
    2019-07-08
    我想明白了 还有权限认证时需要主体信息。。。 尴尬了
    0 回复
  • @肆意丶心 是的
    0 回复
  • TS
    2019-07-09
    doGetAuthenticationInfo 是为了获取部门的uuid doGetAuthorizationInfo 是为了获取当前用户所拥有的权限信息 每次请求都会通过这两个方法将用户的权限读取出来 用户登录只是为了生成token,并将用户登录情况保存,所以登录不需要获取权限信息,但是每次请求就需要去拉取权限信息,并交给shiro进行权限校验 请问楼主一个问题,你知道用户在进行登录的时候,是在哪里将token写进请求的header里面的吗?
    0 回复
  • 肆意丶心
    2019-07-09
    @TS 登录的时候将token写进cookie,然后每次进行请求的时候axios会拦截所有的请求,在请求头中加入token信息,所以你要找到setCookie的地方和axios配置拦截的地方
    0 回复
  • 肆意丶心
    2019-07-09
    @TS img[//cdn.renren.io/2631f201907091741238220.png] img[//cdn.renren.io/aca7f201907091741332765.png]
    0 回复