开发喵星球

RuoYi-Vue-Plus系统用户相关(318)

框架采用sa-token控制权限 并对sa-tokenapi做了一定的业务封装

用户登录

参考自带多种登录实现 不限制用户数据来源 只需要构建 LoginUser 即可完成登录
例如: 同表不同类型 不同表 同表+扩展表

// 此处可根据登录用户的数据不同 自行创建 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

后端获取用户信息:

LoginUser user = LoginHelper.getLoginUser();

获取用户信息(基于token)

LoginUser user = LoginHelper.getLoginUser(token);

获取登录用户id

Long userId = LoginHelper.getUserId();

获取登录用户账户名

String username = LoginHelper.getUsername();

获取登录用户所属租户id

String tenantId = LoginHelper.getTenantId();

获取登录用户所属部门id

Long deptId = LoginHelper.getDeptId();

获取登录用户类型

UserType userType = LoginHelper.getUserType();

判断用户是否为超级管理员

// 判断当前登录用户
boolean b = LoginHelper.isSuperAdmin();
// 判断用户基于id
boolean b = LoginHelper.isSuperAdmin(userId);

判断用户是否为租户管理员

// 判断当前登录用户
boolean b = LoginHelper.isTenantAdmin();
// 判断用户基于角色组
boolean b = LoginHelper.isSuperAdmin(rolePermission);

使用多账户体系登录

分表默认内置了 user 账号类型的用户操作对象,只需要继承 BaseUser 使用 LoginUserHelper 操作即可完成登录

sa-token:
  multiple:
    user: # user账号类型
      # token名称 (同时也是cookie名称)
      token-name: UserAuthorization
      match:
        - /user/**
// 登录
LoginUserHelper.login(user);
// 退出
MultipleStpUtil.USER.logout();

请求头传递格式: UserAuthorization: Bearer token

user 账号类型内置的权限相关注解

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-09-02 00:11:28 阅读量:179
<<   >>


powered by kaifamiao