1.单点登录
单点登录,即SSO(Single Sign On),表现在多个服务中,在其中某1个服务登录后,其它的服务均能识别登录的用户的身份。
单点登录的解决方案:
-
共享Session
- 通常,可以选择将所有Session存储在专门的Redis服务器中,其它需要验证、读取用户身份的服务,都将从此Redis服务器中访问用户的Session信息
-
Token
- 直接记录用户身份的信息,各服务器端只需要使用共同的验证、解析机制,即可识别用户的身份
1.1在Product项目中实现授权访问
需要处理:
- 添加
spring-boot-starter-security
依赖 - 添加
jjwt
、fastjson
依赖 - 创建Security配置类,在此配置类中:
- 将Knife4j相关的URL设计为“白名单”
- 允许跨域访问
- 添加JWT过滤器
- 创建JWT过滤器
- 创建
LoginPrincipal
表示登录的当事人
2作业
2.1显示类别列表
注意:具体实现的应该是“根据父级类别,查询其子级类别列表”。
2.2添加类别
业务规则:
- 如果选择了父级类别,且父级类别不存在,不允许添加
- 深度(depth),由服务器端直接决定,值为:当无父级类别时,值为1,当有父级类别时,值为父级类别的深度+1
- 是否父级(is_parent),新添加的类别,此值固定为0;如果有父级类别,且父级类别的
is_parent
为0时,需要更新为1
2.3删除类别
业务规则:
- 如果数据不存在,不允许删除
- 如果仍存在子级类别,不允许删除
- 如果被删除的类别的父级没有更多子级,则需要将父级的
is_parent
更新为0
- 如果此类别关联了品牌,不允许删除
- 如果此类别关联了属性模板,不允许删除
2.4启用与禁用类别
业务规则:
- 如果数据不存在,不允许启用/禁用
- 如果数据的当前状态与目标状态相同,不允许设置
- 例如当前为启用,目标也是启用,则不允许
2.5创建属性模板
业务规则:
- 每个属性模板的名称必须唯一
2.6显示属性模板
2.7删除属性模板
业务规则:
- 如果数据不存在,则不执行删除
- 如果有“属性”数据关联到此模板,则不允许删除
- 如果此属性模板关联了类别,不允许删除
2.8关联类别与属性模板
提示:
- 关联这2个数据,本质上是向
pms_category_attribute_template
表中插入数据 - 前端页面设计难度较大,可以暂时使用2个输入框来输入类别的id、属性模板的id
2.9添加属性
业务规则:
- 属性模板必须存在
2.10根据属性模板id查询属性列表
2.11删除属性
业务规则:
- 如果数据不存在,则不执行删除
2.12显示品牌列表
2.13关联类别与品牌
提示:
- 关联这2个数据,本质上是向
pms_brand_category
表中插入数据 - 前端页面设计难度较大,可以暂时使用2个输入框来输入类别的id、品牌的id
2.14删除品牌
业务规则:
- 如果数据不存在,不允许删除
- 如果此品牌已经关联了类别,不允许删除