zoukankan      html  css  js  c++  java
  • 认证和授权学习3:springsecurity实现方法级的权限控制

    认证和授权学习3:springsecurity实现方法级的权限控制

    本文使用的springboot版本是2.1.3.RELEASE

    上一篇:springsecurity快速入门

    本文记录下在springsecurity中如何对方法进行权限控制

    前边用http.authorizeRequests()实现了对web资源的保护,如果要实现基于方法的权限控制,springsecurity也提供了两类注解来实现。@PreAuthorize,@Secured

    一、@Secured 注解实现方法授权

    1.1开启方法授权

    在安全配置类上加上注解@EnableGlobalMethodSecurity开启方法权限控制

    @Configuration
    @EnableGlobalMethodSecurity(securedEnabled = true)//开启方法权限控制
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        //用户配置
        //安全配置
    }
    

    1.2 使用@Secured 注解控制方法权限

    在需要进行权限控制的方法上加注解,类或接口中都可以

    public interface ResourceService {
    
        //这个方法允许匿名访问
        @Secured("IS_AUTHENTICATED_ANONYMOUSLY")
        String res1();
    
        //这个方法要有p1角色才能访问
        
        @Secured("ROLE_P1")
        String res2();
    
        //这个方法要有P1或p2角色才能访问
        @Secured({"ROLE_P1","ROLE_P2"})
        String res3();
    }
    
    

    这样这三个方法就受权限控制了。

    二、PreAuthorize 注解控制权限

    2.1 开启方法授权

    在安全配置类上加注解

    @Configuration
    @EnableGlobalMethodSecurity(securedEnabled = true,prePostEnabled = true)//开启方法权限控制
    public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
        //用户配置
        //安全配置
    }
    

    2.2 在要控制的方法上使用注解

    
    public interface ResourceService {
        //匿名访问
        @PreAuthorize("isAnonymous()")
        String res4();
    
        //拥有角色1,角色名要带ROLE_前缀
        @PreAuthorize("hasRole('ROLE_P1')")
        String res5();
    }
    

    三、总结

    以上示例了在spring security中如何进行方法级的权限控制。分为两步,第一,在配置类上开启方法权限控制

    第二步,在对应的方法上加上控制注解指定权限。

    完整的示例工程: 示例工程

  • 相关阅读:
    精讲响应式WebClient第6篇-请求失败自动重试机制,强烈建议你看一看
    dubbo实战之三:使用Zookeeper注册中心
    dubbo实战之二:与SpringBoot集成
    dubbo实战之一:准备和初体验
    树莓派4B安装官方Ubuntu20 Server版(64位)
    JUnit5学习之八:综合进阶(终篇)
    纯函数
    函数式编程基本概念
    vscod使用指南
    实际使用Elasticdump工具对Elasticsearch集群进行数据备份和数据还原
  • 原文地址:https://www.cnblogs.com/chengxuxiaoyuan/p/13973495.html
Copyright © 2011-2022 走看看