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中如何进行方法级的权限控制。分为两步,第一,在配置类上开启方法权限控制

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

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

  • 相关阅读:
    VBS发送邮件-1
    docker命令
    NLP | 自然语言处理
    windows: Python安装scipy,scikit-image时提示"no lapack/blas resources found"的解决方法
    Sense2vec with spaCy and Gensim
    python 去停用词
    nohup command > myout.file 2>&1 &
    NLTK vs SKLearn vs Gensim vs TextBlob vs spaCy
    Gensim进阶教程:训练word2vec与doc2vec模型
    Gensim入门教程
  • 原文地址:https://www.cnblogs.com/chengxuxiaoyuan/p/13973495.html
Copyright © 2011-2022 走看看