我想知道我迄今为止所做的身份验证/令牌更新方式是否可靠,是否存在任何缺陷或漏洞,因为我试图将数据库交互限制为零。具体如下:
- 用户通过正常的用户名/密码或Facebook进行身份验证
- PHP后端生成一个带有30分钟过期时间的令牌并将其发送到angularjs客户端
- JWT令牌存储在$localStorage中
- 每个请求头都使用拦截器注入JWT令牌
- 需要身份验证的所有Slim路由都使用中间件检查发送的令牌。
- 如果令牌无效(已过期,被篡改,不适用于该特定角色),则Slim将以401/403错误响应。
- Angular服务每分钟检查一次令牌是否即将过期
- 如果令牌即将过期(剩余5至1分钟),服务会将旧令牌发布到另一个API端点。
- API端点检查令牌的有效性,并返回一个新令牌,有效期为30分钟。
- 我之前提到的轮询服务将在$ localStorage中替换旧令牌。
- 重复以上步骤。