商家管理后台与sso设计
在本文的电商平台实例中,商家是这个平台的主角,商家管理后台是专门为这个主角提供的一个安全可靠的操作平台。在商家管理后台中,商家可以进行商品管理、订单管理、物流管理、会员管理、评价管理等各个方面的管理工作。这些管理功能及其服务功能分别由不同的微服务项目实现,并通过不同的应用进行部署。现在我们要做的,就是将这些分布在不同应用中的管理功能,组成一个具有相同访问控制设计的管理后台。
单点登录(Single Sign On,SSO)设计可以将这种分散的应用,通过统一的访问控制和权限管理,整合成一个有机整体,为分布式环境中的不同应用,提供一个统一的登录控制和授权认证管理。商家管理员只需在任何一个应用中登录一次,就可以得到使用其他应用的权限。所以,不管商家管理后台的功能由多少个微服务应用组成,对于一个商家管理员来说,它始终只是一个完整的平台。
商家管理后台的设计和开发主要由商家管理开发和SSO开发两部分组成。其中,商家管理开发主要包含商家信息管理及其权限体系设计两部分。
这些设计集中在商家管理微服务项目merchant-microservice 中进行开发,完整的源代码可以从本书源代码中下载,本章的实例对应分支V2.1。
商家及其权限体系设计由 merchant-object、merchant-domain、merchant-restapi、merchant-client和 merchant-web等模块组成。SSO设计由merchant-sso模块和merchant-security模块组成。SSO的客户端接入可通过merchant-web模块进行体验。
商家权限体系的设计及开发
商家权限体系设计由权限管理模型和菜单管理模型两大功能模型组成。其中,权限管理模型包含商家、用户、角色等实体设计,菜单管理模型包含资源、模块、分类等实体设计。两大模型之间通过角色与资源的关联关系,组成一个完整的权限菜单体系结构,如图10-1所示。
在图10-1中,实体之间的关联关系使用单向关联设计,关联关系如下所示:
- 用户从属于商家,是多对一的关联关系。
- 用户拥有角色,是多对多的关联关系。
- 角色拥有资源,是多对多的关联关系。
- 资源从属于模块,是多对一的关联关系。
- 模块从属于分类,是多对一的关联关系。
在图10-1所示的关联关系中,箭头所指一方为关联关系的主键,另一方为外键。其中,用户与角色、角色与资源分别使用一个中间表来存储关联关系。
这些对象所对应的物理模型,经过PowerDesigner 设计之后,最后完成的表格定义及其关联关系如图10-2所示。
在图10-2中,商家、用户、角色、资源、模块和分类等表格分别为t_merchant、t_usert_role.t_resource.t_model和 t_kind,用户与角色、角色与资源的关联关系的表格分别为user_role和role_resource。此外,表格persistent_logins是在用户处于登录状态时,用来存储临时数据的。
权限管理模型设计
权限管理模型主要由商家、用户、角色、资源、模块和分类等实体组成。下面对这些实体分别进行简要说明。
商家实体主要由ID、名称、邮箱、电话、地址、联系人和创建日期等属性组成,实现代码如下所示:
@Entity
@Table(name = "t merchant")
public class Merchant implements java.io.Serializable{
@Id
@GeneratedValue(strategy =GenerationType.IDENTITY)private Long id;
private String name;private String email;private String phone;private String address;private String linkman;
@DateTimeFormat(p