首页 > 其他分享 >Mall 动态权限学习参考

Mall 动态权限学习参考

时间:2022-09-24 09:44:47浏览次数:73  
标签:参考 admin 路径 Mall new 白名单 import 权限

代码仓库

https://github.com/Rain-with-me/JavaStudyCode/tree/main/4-springboot-security-dynic

  • 本文查看 Mall 的动态权限管理


动态权限的思路


路由拦截思路

  • 把需要权限拦截的路由放在数据库中,当请求发送过来进行判断,如果是白名单的直接通过,然后看他是否添加权限路由,如果有就进行比对,这个以后含有这个权限就可以访问。

image-20220924090058421


实现思路

可以先过一遍 Mall 的文档: https://www.macrozheng.com/mall/technology/permission_back.html#基于路径的动态权限控制


  • 使用一个拦截器进行鉴权

  • 一个用户的注册,就分配了用户权限的级别,然后有他包含的权限

  • 白名单跳过,没有在权限表的跳过

  • 首先获取访问的路径,这里是使用的 Ant 风格,然后和用户包含的权限进行匹配

  • 这里的实现首先把所有的权限名字放在一个 Map 里面,Mao 里面的加载使用 loadDataSource 当权限表进行更改,就刷新里面的值

  • 获取访问路径代码如下

    image-20220924092526930



  • 进行路径匹配代码

    image-20220924092634453



获取用户权限列表

image-20220924092949679


 @Override
    public UserDetails loadUserByUsername(String username) {
        //获取用户信息
        UmsAdmin admin = getAdminUsername(username);
        if (admin != null) {
            List<UmsResource> resourceList = umsResourceService.getResourceList(admin.getId());
            return new AdminUserDetails(admin,resourceList);
        }
        throw new UsernameNotFoundException("用户名或密码错误");
    }



添加白名单

  • 建议使用多环境 (dev,test)
# -是数组
secure:
  ignored:
    urls: #安全路径白名单
      - /swagger-ui.html
      - /swagger-resources/**
      - /swagger/**
      - /**/v2/api-docs
      - /**/*.js
      - /**/*.css
      - /**/*.png
      - /**/*.ico
      - /webjars/springfox-swagger-ui/**
      - /actuator/**
      - /druid/**
      - /admin/login
      - /admin/register
      - /admin/info
      - /admin/logout
      - /minio/upload



  • 获取白名单数组
import lombok.Getter;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;

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

/**
 * SpringSecurity白名单资源路径配置
 * Created by macro on 2018/11/5.
 */
@Getter
@Setter
@ConfigurationProperties(prefix = "secure.ignored")
public class IgnoreUrlsConfig {

    private List<String> urls = new ArrayList<>();

}


  • SecurityConfig 配置进去
   @Override
    protected void configure(HttpSecurity httpSecurity) throws Exception {
        ExpressionUrlAuthorizationConfigurer<HttpSecurity>.ExpressionInterceptUrlRegistry registry = httpSecurity.authorizeRequests();

        // 不需要保护的资源路径允许访问
        for (String url : ignoreUrlsConfig().getUrls()) {
            registry.antMatchers(url).permitAll();
        }

        registry.antMatchers(HttpMethod.OPTIONS).permitAll();

        // 其他任何请求都需要身份认证
        registry.and()
                .authorizeRequests()
                .anyRequest()
                .authenticated()
                // 关闭跨站请求防护及不使用session
                .and()
                .csrf()
                .disable()
                .sessionManagement()
                .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                // 自定义权限拒绝处理类
                .and()
                .exceptionHandling()
                .accessDeniedHandler(restfulAccessDeniedHandler)
                .authenticationEntryPoint(restAuthenticationEntryPoint)
                // 自定义权限拦截器JWT过滤器
                .and()
                .addFilterBefore(jwtAuthenticationTokenFilter(), UsernamePasswordAuthenticationFilter.class);
    }
    
    
       /**
     * @Description: 配置文件读取白名单
     * @Author: 雨同我
     * @DateTime: 2022/9/20 8:58
    */
    @Bean
    public IgnoreUrlsConfig ignoreUrlsConfig() {
        return new IgnoreUrlsConfig();
    }

标签:参考,admin,路径,Mall,new,白名单,import,权限
From: https://www.cnblogs.com/rain-me/p/16724964.html

相关文章

  • Linux文件权限管理
    u:user使用者权限,g:group组权限,o:other其他人权限sudochmodu+xtest:给test文件的使用者添加可执行权限sudochmodu-xtest:给test文件的使用者减去可执行权限sud......
  • 移动硬盘无权限访问文件夹
    硬盘碰到过这种情况,记录一下解决方式X:\文件或目录损坏且无法读取磁盘属性为RAW格式,且容量为0在cmd中运行CHKDSKX:/F命令 x:为损坏的盘符/f参数指修复磁盘......
  • MongoDB用户权限管理
    管理用户创建及使用利用createUser函数创建用户:db.createUser({ user:"username", pwd:"password", roles:[ { role:"authorityName", db:"admin" } ......
  • 对于Java中权限修饰符的理解
    老是把Java中权限修饰符给忘记,写一个博客加深印象吧权限分为四个作用域:当前类,同一个包,其他包的子类,其他包的类。首先要知道包的概念,Java中一个包是指一个package下的所......
  • Spring Boot 切面AOP实现权限校验(实例演示与注解全解)
    目录理解AOP什么是AOPAOP体系与概念AOP实例第一个实例第二个实例AOP相关注解@Pointcut@Around@Before@After@AfterReturning@AfterThrowing1......
  • 唯杰地图之前端CAD图GIS数据访问权限配置
    前言数字经济时代,数据要素的价值日益凸显,与之相应的,数据安全问题也越来越受到重视。唯杰地图VJMAP为CAD图或自定义地图格式WebGIS可视化显示开发提供的一站式解决方案,支......
  • Oracle循环设置表权限
      beginforiin(select'grantselecton'||table_name||'toimes'asstmfromuser_tableswheretable_namenotlike'%$%' )loop......
  • Android 11 存储权限适配指南
    (1)Android权限分类普通权限:只需要在清单文件中注册即可危险权限:需要在代码中动态申请,以弹系统Dialog的形式进行请求特殊权限:需要在代码中动态申请,以跳系统Activity......
  • 一套.NET Core +WebAPI+Vue前后端分离权限框架
    今天给大家推荐一个基于.NetCore开发的企业级的前后端分离权限框架。项目简介这是基于.NetCore开发的、构建的简单、跨平台、前后端分离的框架。此项目代码清晰、层......
  • 高级项目经理参考墙
    责任:担任PoDLead(平台负责人)和TechnicalLead(技术负责人),与来自其他国家的技术团队,定期沟通项目事宜;拥有、设计、管理和参与整个开发生命周期,包括需求分析、系统设计......