Files
sa-token/sa-token-doc/doc/use/many-account.md
2021-01-02 04:00:49 +08:00

30 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 多账号验证
---
## 问题
- 有的时候在一个项目中,我们会设计两套账号体系,比如一个商城的`user表``admin表`
- 这时候,我们就需要将两套账号的权限认证分开,防止冲突
## 核心思想
- sa-token在设计时充分考虑了多账号体系时的各种逻辑
- 以上几篇介绍的api都是经过 `StpUtil`类的各种静态方法进行各种验证,而如果你深入它的源码,[点此阅览](https://gitee.com/sz6/sa-token/blob/master/sa-token-core/src/main/java/cn/dev33/satoken/stp/StpUtil.java)
- 就会发现,此类并没有任何代码逻辑,唯一做的事就是对成员变量`stpLogic`的各个API进行包装一下进行转发
- 这样做有两个优点
- `StpLogic`类的所有函数都可以被重写,按需扩展
- 在构造方法时随意传入一个不同的 `loginKey`,就可以再造一套账号登录体系
## 操作示例
比如说,对于`StpUtil`类,我们只做`admin账号`权限验证,而对于`user账号`,我们则:
1. 新建一个新的权限验证类,比如: `StpUserUtil.java`
2.`StpUtil.java`类的全部代码复制粘贴到 `StpUserUtil.java`
3. 更改一下其 `loginKey` 比如:
``` java
// 底层的 StpLogic 对象
public static StpLogic stpLogic = new StpLogic("user"); // loginKey改为user
```
4. 接下来就可以像调用`StpUtil.java`一样调用 `StpUserUtil.java`了,这两套账号认证的逻辑是完全隔离的