b2b2c系统jwt权限源码分享part1
需求分析 在分享源码之前,先将b2b2c系统中权限模块的需求整理、明确,方便源码的理解。 业务需求 b2b2c电子商务系统中权限主要有三个角色:买家、卖家、平台管理员。 其中卖家角色中又有店员,可以设置店员管理不同的权限(如商品和订单的权限分派给不同的店员),同理平台管理员也需要进行上述精细权限的管理,买家权限相对比较单一。 如果禁用了某个店员或管理员,则这个用户需要立刻被登出,保证数据安全性 技术需求 去中心化 javashop电商系统 采用去中心化、容器化的部署方案,考虑性能及扩展性,鉴权需要采用token的方式,不能采用有中心的session方案 公用能力抽象 b2b2c电商体系中存在三端(买家、卖家、管理端),出于性能、稳定性考虑,这三端在部署上是分离的,体现为买家API、卖家API、管理端API,权限本质上就是拦截这三端的api请求,进行鉴权,这三种角色的鉴权既有通用的逻辑又有个性化的逻辑: 通用:token的生成和解析 个性化:权限数据源不同(SecurityMetadataSource) 具体体现就是角色和权限绑定关系的来源不同:卖家端来自卖家的权限设置,平台的来自管理端的权限设置。 这就要求在架构和代码实现上做的该重用的重用,该分离的分离。 架构思路 Token解析架构思路: 两个接口分别对应token的解析和token的生成 默认实现了一个jwt的实现类