Angularjs和slim框架JWT身份验证和令牌刷新流程

Răz*_*van 10 php authentication slim jwt angularjs

我想知道我到目前为止所做的是一种验证/更新令牌的合理方式,如果我试图将数据库交互限制为零,我应该注意哪些漏洞或漏洞.开始.

  1. 用户通过普通用户名/密码或Facebook进行身份验证
  2. PHP后端生成一个标记,其到期时间为30分钟,并将其发送到angularjs客户端
  3. JWT令牌存储在$ localStorage中
  4. 在每个请求头中,在拦截器的帮助下注入JWT令牌
  5. 需要身份验证的所有Slim路由都在中间件的帮助下检查发送的令牌.
  6. 如果令牌无效(已过期,已被篡改,不适合该特定角色),Slim将以401/403错误响应.
  7. 如果令牌即将到期,角度服务会每分钟检查一次
  8. 如果令牌即将到期(剩下5到1分钟),则服务将旧令牌发布到另一个API端点.
  9. API端点检查令牌的有效性,并使用新的响应时间为+30分钟进行响应.
  10. 我之前提到的轮询服务替换了$ localStorage中的旧令牌.
  11. 冲洗并重复.

注意:SSL将在生产中实施

赏金被授予@Valdas,因为他是唯一真正回答的人

小智 5

无需循环令牌过期检查。我将 https://github.com/auth0/angular-jwt用作我的Angular项目的库,该库提供了一种在触发HTTP请求之前刷新令牌的方法,从而简化了auth机制。

另外,如果令牌加载了模板(以.html结尾),则可以从请求中删除令牌,但这只是个人喜好。