JWT过期,修改密码,注销登录如何处理

首先给大家推荐一下我老师大神的人工智能教学网站。教学不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵黄段子!点这里可以跳转到网站

新整理:

如何过期?

在redis中,将需要过期的用户ID,设置一个过期时间,存起来。
如果过来一个token,生成时间早于存放过期时间,则全部无效。晚于存放的过期时间,则放行,说明有效。
解决

下面这个方法太繁琐了,不要这么用了。。

JWT
使用场景:(自己总结的,每次请求携带token,然后到服务端验证token是否正确,是否过期,然后解码出携带的用户信息。服务端不需要再存储session信息,避免多点部署带来session处理的问题。 适合做无状态用户请求用户验证,避免存储session)

介绍:
https://jwt.io/introduction/
http://www.jianshu.com/p/576dbf44b2ae
http://www.jianshu.com/p/fcc1a6482143?from=timeline

总结
优点
因为json的通用性,所以JWT是可以进行跨语言支持的,像JAVA,JavaScript,NodeJS,PHP等很多语言都可以使用。
因为有了payload部分,所以JWT可以在自身存储一些其他业务逻辑所必要的非敏感信息。
便于传输,jwt的构成非常简单,字节占用很小,所以它是非常便于传输的。
它不需要在服务端保存会话信息, 所以它易于应用的扩展

缺点
 - 一旦拿到token, 可用它访问服务器,直到过期,中间服务器无法控制它,如是它失效(有解决方案: 在 token
   中保存信息,可添加额外的验证,如加一个 flag, 把数据库对应的flag失效,来控制token有效性)。 
 -  token的过期时间设置很关键,一般把它设到凌晨少人访问时失效,以免用户使用过程中失效而丢失数据。  
 -  token保存的信息有限,且都是字符串。

安全相关
不应该在jwt的payload部分存放敏感信息,因为该部分是客户端可解密的部分。
保护好secret私钥,该私钥非常重要。
如果可以,请使用https协议
有人提到jwt暴露签名算法(alg),而且会有None(无签名),所以建议隐去alg。一般的协议制定都会考虑扩展性和普适性。但是我们在应用中可以采用我们默认的算法,而不是根据alg去处理。

作者:Dearmadman
链接:http://www.jianshu.com/p/576dbf44b2ae
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

今天讨论的主要是 token过期时间的问题
参考 :https://stackoverflow.com/questions/28759590/best-practices-to-invalidate-jwt-while-changing-passwords-and-logout-in-node-js

我们的解决方法是:

要求:
①一个账号仅能有一个token可以使用。
②token设置过期时间
③每次登录,包括token登录都返回一个可用的token给客户端,保证合理登录的用户都可以用token,实现token不会过期的效果。

思路:

function  刷新toke()
{
	token登录和正常账号密码登录:
	判断该用户(在redis中)是否已经有token,然后判断这个token创建时间是否当日创建的,如果是当日创建的。则直接返回该token给客户端。非当日创建的,重新生成一个新token给客户端
redis中保存数据结构   token_account_id:111     ['token'=>'aaa' , 'create_time' =>1500000];
}

function 根据token获取用户信息(token)
{
	判断token对错=》是否过期=》解析出用户信息;
   到redis中查该用户 请求的token 和 redis存的token是否一致,不一致不允许token登录,
   再次根据创建时间,判断这个token是否可以用(主要防止修改密码和注销操作的token没失效问题) 
	最后返回用户信息	
}

修改密码和注销。直接将redis中该用户的信息过期。下次通过token登录,会提醒token失效,要重新登录,我们重新生成一个新的token给用户,然后balaball。。通过redis存储token,实现 token过期失效的问题了。

jwt采用 H256加密算法demo:https://github.com/postbird/jqueryTestJWT
采用RSA加密算法demo http://blog.csdn.net/u012129607/article/details/74075037

点这里可以跳转到人工智能网站

0 0 投票数
文章评分
订阅评论
提醒
0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请发表评论。x
()
x