com.midcu.common.component.StpInterfaceImpl Maven / Gradle / Ivy
The newest version!
package com.midcu.common.component;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.session.SaSessionCustomUtil;
import cn.dev33.satoken.stp.StpInterface;
import cn.dev33.satoken.stp.StpUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
/**
* 自定义权限验证接口扩展
*/
@Component // 保证此类被SpringBoot扫描,完成Sa-Token的自定义权限验证扩展
@Slf4j
public class StpInterfaceImpl implements StpInterface {
// 返回一个账号所拥有的权限码集合
@Override
public List getPermissionList(Object loginId, String loginType) {
// 1. 声明权限码集合
List permissionList = new ArrayList<>();
// 2. 遍历角色列表,查询拥有的权限码
for (String roleId : getRoleList(loginId, loginType)) {
SaSession roleSession = SaSessionCustomUtil.getSessionById("role-" + roleId);
// 从数据库查询这个角色所拥有的权限列表
List list = roleSession.get(SaSession.PERMISSION_LIST, () -> {
log.error("我的天啊,为什么权限消失了呢?");
return new ArrayList();
});
permissionList.addAll(list);
}
// 3. 返回权限码集合
return permissionList;
}
// 返回一个账号所拥有的角色标识集合
@Override
public List getRoleList(Object loginId, String loginType) {
SaSession session = StpUtil.getSessionByLoginId(loginId);
return session.get(SaSession.ROLE_LIST, () -> {
log.error("让人无法理解,角色列表也消失了?");
return new ArrayList();
});
}
}