发布网友 发布时间:2022-04-23 09:47
共1个回答
热心网友 时间:2022-04-18 18:58
摘要Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。咨询记录 · 回答于2021-10-18jwt两个主题、唯一编号不同生成相同的tokenJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).定义了一种简洁的,自包含的方法用于通信双方之间以JSON对象的形式安全的传递信息。因为数字签名的存在,这些信息是可信的,JWT可以使用HMAC算法或者是RSA的公私秘钥对进行签名。jwt会不会生成重复的token,只设置主题和唯一ID,主题可能相同、id不同cess_token 过期设置为15分钟前端发起请求,后端验证access_token是否过期;如果过期,前端发起refresh_token请求,后端设置已再次授权标记为true,请求成功前端发起请求,后端验证再次授权标记,如果已经再次授权,则拒绝refresh_token的请求,请求成功如果前端每隔72小时,必须重新登录,后端检查用户最后一次登录日期,如超过72小时,则拒绝刷新token的请求,请求失败1.0实现登录成功,返回access_token和refresh_token,客户端缓存此两种token;使用access_token请求接口资源,成功则调用成功;如果token超时,客户端携带refresh_token调用中间件接口获取新的access_token;中间件接受refresh_token的请求后,检查refresh_token是否过期。如过期,拒绝刷新,客户端收到该状态后,跳转到登录页;如未过期,生成新的access_token和refresh_token并返回给客户端(如有可能,让旧的refresh_token失效),客户端携带新的access_token重新调用上面的资源接口。客户端退出登录或修改密码后,调用中间件注销旧的token(使access_token和refresh_token失效),同时清空客户端的access_token和refresh_toke。后端表id user_id client_id client_secret refresh_token expire_in create_date del_flag2.0实现场景: access_token访问资源 refresh_token授权访问 设置固定时间X必须重新登录登录成功,后台jwt生成access_token(jwt有效期30分钟)和refresh_token(jwt有效期15天),并缓存到redis(hash-key为token,sub-key为手机号,value为设备唯一编号(根据手机号码,可以人工废除全部token,也可以根据sub-key,废除部分设备的token。),设置过期时间为1个月(redis),保证最终所有token都能删除),返回后,客户端缓存此两种token;使用access_token请求接口资源,校验成功