StpInterfaceImpl 实现类
/**
* 返回一个账号所拥有的角色标识集合 (权限与角色可分开校验)
*/
@Override
public List<String> getRoleList(Object loginId, String loginKey) {
// 1. 获取这个账号所属角色id
SaSession session = StpUtil.getSessionByLoginId(loginId);
// 2. 获取这个角色id拥有的权限列表
Integer userType= (Integer) session.get("Role-" + loginId);
// 3. 判断
List<String> list = new ArrayList<>();
if(userType.equals(Constant.SCHOOL_CHARGE_PERSON)){
list.add("SCHOOL_CHARGE_PERSON");
}
if(userType.equals(Constant.DEPARTMENT_CHARGE_PERSON)){
list.add("DEPARTMENT_CHARGE_PERSON");
}
if(userType.equals(Constant.AUDIT_TEACHER)){
list.add("AUDIT_TEACHER");
}
if(userType.equals(Constant.INSTRUCTOR_TEACHER)){
list.add("INSTRUCTOR_TEACHER");
}
if(userType.equals(Constant.STUDENT)){
list.add("STUDENT");
}
return list;
}
用户登录类:
@PostMapping("login")
public R userLogin(@RequestBody LoginRequestVo loginUser){
//获取用户Id
String userNumber = loginUser.getUserNumber();
//获取用户封装信息
UserInfoVo userInfo = UserHandler.getUserInfo(userNumber);
boolean equals = SaSecureUtil.md5(loginUser.getPassword()).equals(userInfo.getPassword());
if(equals){
//用户登录
StpUtil.setLoginId(userInfo.getUserId(),false);
//将权限放入sa-session里面缓存
StpUtil.getSession().set("Role-"+userInfo.getUserId(),userInfo.getType());
//返回token给前端
return R.ok().data(StpUtil.getTokenName(),StpUtil.getTokenValue())
.message("用户 "+userInfo.getName()+" 登录成功");
}else {
return R.error().message("密码错误 请重新输入");
}
}