企业账号&登录体系接入
前提条件
- 企业版用户
- 需要独立部署
- 云兔登录和用户体系基于Springboot和SpringSecurity来实现
登录体系接入
可以基于Springboot和SpringSecurity来自定义实现
建议:可以添加统一的Filter或者切面的方式来解析和判断当前用户是否登录、登录用户是谁
账号体系接入
扩展并实现获取当前登录用户
这部分需要自己扩展实现
案例:通过 UserSessionHolder 统一封装了获取当前登录用户信息
扩展并实现实现 IUserSessionService 接口
Java
public interface IUserSessionService {
/**
* 获取当前登录的用户信息
*/
User getCurrentUser();
/**
* 当前登录用户是否超级管理员,用于权限判断
*/
boolean isSuperAdmin();
/**
* 获取当前登录用户的标识,云兔默认返回用户的Id,可以按需返回用户的工号、code等其他标识
*/
String getUserIdentity();
}接口实现案例,登录用户的获取实现以 UserSessionHolder 为例
Java
public class UserSessionServiceImpl implements IUserSessionService {
@Override
public User getCurrentUser() {
return UserSessionHolder.getUser();
}
@Override
public boolean isSuperAdmin() {
return UserSessionHolder.isYtAdmin();
}
@Override
public String getUserIdentity() {
if (UserSessionHolder.getUser() != null) {
// 可以是用户ID、code、或者工号等用户标识
return UserSessionHolder.getUser().getId();
}
return "";
}
}扩展并实现获取用户列表 IUserEmployeeService 接口
用户或员工信息的标准化结构
TypeScript
public class YtEmployee {
/**
* 用户和员工的唯一编号(保留原始类型Long/String)
*/
private Object code;
/**
* 用户名
*/
private String userName;
/**
* 用户昵称
*/
private String nickName;
/**
* 显示名称
*/
private String displayName;
/**
* 手机号
*/
private String mobile;
/**
* 邮箱
*/
private String email;
/**
* 头像
*/
private String avatar;
/**
* 状态, 是否可用
*/
private String status;
}IUserEmployeeService 的接口定义
Java
public interface IUserEmployeeService {
/**
* 通过用户ID/code获取用户信息
*/
YtEmployee getById(String id);
/**
* 方法描述:根据用户和员工的id或code列表查询用户信息
* @param userIds 用户id或code列表
*
* @return 用户员工列表
*/
List<YtEmployee> getUserEmployeeByIds(List<String> userIds);
/**
* 根据用户ID列表分页查询用户信息
*
* @param request 用户查询参数
* @return 分页结果,包含用户信息列表和分页信息
*/
PageResult<YtEmployee> getUserListWithPaging(YtDeptRequest request);
/**
* 根据用户输入查询员工ID
* 优先级:纯数字认为是code直接返回 → username → nickname
* @param input 用户输入(userName/nickName)
* @return 员工ID(未找到返回null)
*/
String getUserCodeByInput(String input);
}