使用Mybatis-plus多租户解决越权问题


使用Mybatis-plus多租户解决越权问题

背景

权限校验完毕后,还需要解决水平越权问题,使用MyBatis-plus中的多租户拦截器可以轻松解决。

文档地址:https://mp.baomidou.com/guide/interceptor-tenant-line.html#tenantlineinnerinterceptor

代码

@Configuration
public class MybatisPlusPageConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {

        MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
        mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        mybatisPlusInterceptor.addInnerInterceptor(new TenantLineInnerInterceptor(this.tenantLineHandler()));
        return mybatisPlusInterceptor;
    }

    /**
     * 多租户的形式解决越权问题
     * @return
     */
    private TenantLineHandler tenantLineHandler() {

        return new TenantLineHandler() {
            /**
             * 租户id
             * @return
             */
            @Override
            public Expression getTenantId() {
                return new LongValue(LoginInterceptor.threadLocal.get().getId());
            }

            /**
             * 查询的列,指数据库中的列
             * @return
             */
            @Override
            public String getTenantIdColumn() {
                return "user_id";
            }

            /**
             * 忽略的表名
             * @param tableName
             * @return
             */
            @Override
            public boolean ignoreTable(String tableName) {
                if (tableName.equalsIgnoreCase("address")) {
                    return false;
                }
                return true;
            }
        };
    }

}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM