Angularjs和slim框架JWT认证和令牌刷新流


Angularjs and slim framework JWT authentication and token refresh flow

我想知道我到目前为止所做的是否是一种可靠的身份验证/更新令牌的方法,如果有任何缺陷或漏洞,我应该意识到,因为我试图将数据库交互限制为零。这里。

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

注意:SSL将在生产环境中实现

奖励@Valdas,因为他是唯一一个真正回答的人

不需要循环令牌过期检查。我使用https://github.com/auth0/angular-jwt作为Angular项目的库,它提供了在HTTP请求被触发之前刷新令牌的方法,简化了验证机制。

同样,如果请求正在加载模板(以.html结尾),您可以从请求中删除令牌,但这只是个人偏好。