All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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();
        });
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy