系统用户相关
框架采用sa-token控制权限 并对sa-token的api做了一定的业务封装
用户登录
参考自带多种登录实现 不限制用户数据来源 只需要构建 LoginUser 即可完成登录
例如:同表不同类型
不同表
同表+扩展表
java
// 此处可根据登录用户的数据不同 自行创建 loginUser
LoginUser loginUser = loginService.buildLoginUser(user);
loginUser.setClientKey(client.getClientKey());
loginUser.setDeviceType(client.getDeviceType());
SaLoginModel model = new SaLoginModel();
model.setDevice(client.getDeviceType());
// 自定义分配 不同用户体系 不同 token 授权时间 不设置默认走全局 yml 配置
// 例如: 后台用户30分钟过期 app用户1天过期
if (client.getTimeout() != null) {
model.setTimeout(client.getTimeout());
}
if (client.getActiveTimeout() != null) {
model.setActiveTimeout(client.getActiveTimeout());
}
// 生成token
LoginHelper.login(loginUser, model);
获取用户信息
完成登录后会生成登录token返回给前端 前端需要再请求头携带token 后端方可获取到对应的用户信息
请求头传递格式: Authorization: Bearer token
后端获取用户信息:
java
LoginUser user = LoginHelper.getLoginUser();
获取用户信息(基于token)
java
LoginUser user = LoginHelper.getLoginUser(token);
获取登录用户id
java
Long userId = LoginHelper.getUserId();
获取登录用户账户名
java
String username = LoginHelper.getUsername();
获取登录用户所属租户id
java
String tenantId = LoginHelper.getTenantId();
获取登录用户所属部门id
java
Long deptId = LoginHelper.getDeptId();
获取登录用户类型
java
UserType userType = LoginHelper.getUserType();
判断用户是否为超级管理员
java
// 判断当前登录用户
boolean b = LoginHelper.isSuperAdmin();
// 判断用户基于id
boolean b = LoginHelper.isSuperAdmin(userId);
判断用户是否为租户管理员
java
// 判断当前登录用户
boolean b = LoginHelper.isTenantAdmin();
// 判断用户基于角色组
boolean b = LoginHelper.isSuperAdmin(rolePermission);
使用多账户体系登录
分表默认内置了
user
账号类型的用户操作对象,只需要继承BaseUser
使用LoginUserHelper
操作即可完成登录
yaml
sa-token:
multiple:
user: # user账号类型
# token名称 (同时也是cookie名称)
token-name: UserAuthorization
match:
- /user/**
java
// 登录
LoginUserHelper.login(user);
// 退出
MultipleStpUtil.USER.logout();
请求头传递格式: UserAuthorization: Bearer token
user
账号类型内置的权限相关注解
@SaUserCheckDisable
: 服务禁用校验:在没有被禁用指定服务的情况下才可以进入方法@SaUserCheckLogin
: 只有登录之后才能进入该方法@SaUserCheckPermission
: 权限认证校验:必须具有指定权限才能进入该方法@SaUserCheckRole
: 角色认证校验:必须具有指定角色标识才能进入该方法@SaUserCheckSafe
: 二级认证校验:必须二级认证之后才能进入该方法