用户访问简单流程图:

图片描述

用户获取token:

携带账号密码访问认证中心,认证中心校验合法后通过jwt生成token(消息体包含用户ID,过期时间)
并且以用户ID为key,token为value缓存到Redis中

用户退出、修改密码或后台强制用户退出:

通过用户ID删除Redis缓存中对应的token

用户访问资源:

用户携带token访问统一API网关,网关通过过滤器解析token获取用户ID,判断过期时间,
通过用户ID查询Redis缓存是否存在,再生成新的token(消息体包含用户ID,过期时间,用于服务与服务之间调用使用,过期时间可以设置1分钟左右),将新的token添加到请求头中带去资源服务器

资源访问资源:

需要携带网关生成的token去访问

说明:

认证中心生成的token与网关生成的token使用的签名不能相同,这样可以确保用户无法直接访问资源服务器,只能通过网关去访问。

怎么处理用户角色权限(RBAC的)?

在认证中心生成的token消息体中包含用户拥有的角色ID集合,访问网关时从缓存中获取角色与权限的关系,然后校验是否有权限访问。

  • 后台编辑角色与权限的关系只需要更新下缓存
  • 后台编辑用户与角色的关系时要根据用户ID移除Redis中对应的token,用户需要刷新token或重新登录。
  • 后台删除角色时通过角色与用户的关系数据获取拥有对应角色的用户集合,再根据用户集合移除token
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐