15.app端satoken完整配置

新建article微服务

在ruoyi-module中创建Article微服务
源码:
链接:https://pan.baidu.com/s/1OUDq_lAy3xwoTbk2MGPDGw
提取码:1111

基本配置

配置原理参见上一章:
nacos中
seata-server.properties

service.vgroupMapping.ruoyi-article-group=default

datasource.yml

  article:
    url: jdbc:mysql://192.168.0.80:3306/ry_news_article?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&rewriteBatchedStatements=true
    username: root
    password: root

ruoyi-article.yml

spring:
  datasource:
    dynamic:
      # 设置默认的数据源或者数据源组,默认值即为 master
      primary: master
      datasource:
        # 主库数据源
        master:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: ${datasource.article.url}
          username: ${datasource.article.username}
          password: ${datasource.article.password}

ruoyi-gateway.yml

        - id: ruoyi-article
          uri: lb://ruoyi-article
          predicates:
            - Path=/article/**
          filters:
            - StripPrefix=1

核心代码

com.ruoyi.common.satoken中进行权限添加,由于app端没有注册需求,所以权限直接手写,数据库读取方式可参见源码中app_pc部分。
为所有APP用户添加一个app:user权限
15.app端satoken完整配置_第1张图片

package com.ruoyi.common.satoken.core.service;

import cn.dev33.satoken.stp.StpInterface;
import com.ruoyi.common.core.enums.UserType;
import com.ruoyi.common.satoken.utils.LoginHelper;
import com.ruoyi.system.api.model.LoginUser;

import java.util.ArrayList;
import java.util.List;

/**
 * sa-token 权限管理实现类
 *
 * @author Lion Li
 */
public class SaPermissionImpl implements StpInterface {

    /**
     * 获取菜单权限列表
     */
    @Override
    public List<String> getPermissionList(Object loginId, String loginType) {
        LoginUser loginUser = LoginHelper.getLoginUser();
        UserType userType = UserType.getUserType(loginUser.getUserType());
        if (userType == UserType.SYS_USER) {
            return new ArrayList<>(loginUser.getMenuPermission());
        } else if (userType == UserType.APP_USER) {
            // 其他端 自行根据业务编写
            List<String> list = new ArrayList<String>();
            list.add("app:all");

            return list;
        }
        return new ArrayList<>();
    }

    /**
     * 获取角色权限列表
     */
    @Override
    public List<String> getRoleList(Object loginId, String loginType) {
        LoginUser loginUser = LoginHelper.getLoginUser();
        UserType userType = UserType.getUserType(loginUser.getUserType());
        if (userType == UserType.SYS_USER) {
            return new ArrayList<>(loginUser.getRolePermission());
        } else if (userType == UserType.APP_USER) {
            // 其他端 自行根据业务编写
        }
        return new ArrayList<>();
    }
}

ArticleHomeController中通过@SaCheckPermission(“app:all”)注解进行验证,如果验证不通过,不允许进入注解所在的方法:
15.app端satoken完整配置_第2张图片

测试

登录成功后,会自动调用/load调用article资源:
15.app端satoken完整配置_第3张图片

如果将@SaCheckPermission(“app:all”)中的app:all替换为其他权限,则无法访问资源,权限拦截成功!

大功告成!

你可能感兴趣的:(java,spring,数据库)