请问
1 是不是使用jwt,登录时生成好的token可以不用放入redis,直接在拦截器验证请求头的token进行验证也可以呢?
2 当过期刷新完token后,前端怎么再获取呢,有点晕。
希望你回复下,谢谢

解决方案 »

  1.   

    1 看你的token都有什么信息,如果验证token的信息足够,可以不放redis2
    后台要验证token
    前端发送请求带着token,后台验证token过期,重定向到非法页面,引导用户重新登录或重新获取token(动态口令之类的)
      

  2.   

    你说的刷新token是自动续费的那种还是要重新登录的那种呢
      

  3.   

    是自动续费的那种,不知道前端怎么再次获取token,比如后端续签token后再把它放入响应头,前端怎么再次获取呢?
      

  4.   

    是自动续费的那种,不知道前端怎么再次获取token,比如后端续签token后再把它放入响应头,前端怎么再次获取呢?
      

  5.   

    你的前端怎么调用后台的?
    前端 (请求)--> 后台(token失效,刷新token)返回(response)--> 前端(拿到response,保存token)
      

  6.   

    哦哦,谢谢您,那拦截器怎么知道redis的key呢,是不是登录时生成好的token,同时把token放入到响应头和redis中,然后拦截器从请求头获取token的值,把这个值当成key再去查redis呢?
      

  7.   

    请问,比如token过期了,拦截器通过jwt取不出过期时间进行比对,没法刷新,一取就报错,不知道怎么办才好?
    是不是生成token的时候同时要把时间单独存到redis中呢,然后当刷新的时候,通过拦截器再从redis把时间取出来和当前时间比对看是否需要刷新呢?
      

  8.   

    你的jwt里有什么信息?没有过期期限吗?
      

  9.   

    有过期时间啊,但是当token过期了,无论用户信息和过期时间都取不出来了,一取直接抛异常,所以我想是不是生成token的时候,同时把时间单独放在redis中呢
      

  10.   

    token里包含过期时间你就不用保存token在服务端了如果要续期,直接丢cookie里不就行了?
      

  11.   

    哦哦,我总觉得放cookie不太安全,所以想着放redis里
      

  12.   

    捕捉过期异常,自己用base64解码token取出相关信息。最好信息里有个刷新期限,判断是否在刷新期限内,是则刷新token,业务处理结束后把token一起返回给客户端;不在刷新期限内则引导到登录页面。