SpringSecurity(十三)—-基于注解的访问控制

SpringSecurity(十三)—-基于注解的访问控制

一.开启方式

在Spring Security中提供了一些访问控制的注解。这些注解都是默认是都不可用的,需要在启动类中添加@EnableGlobalMethodSecurity注解进行开启。
如果不开启就使用注解会报500
在这里插入图片描述

二.常用注解

1.@Secured

@Secured是专门用于判断是否具有角色的。能写在方法或类上。@Secured参数要以ROLE_开头。

1.1实现步骤

1)开启注解
在启动类(也可以在配置类等能够扫描的类上)上添加@EnableGlobalMethodSecurity(securedEnabled = true)

@SpringBootApplication
@EnableGlobalMethodSecurity(securedEnabled = true)
public class MyApp {
   
    public static void main(String [] args){
   
        SpringApplication.run(MyApp.class,args);
    }
}

2)在控制器方法上 添加@Secured注解

@Secured("ROLE_abc")
@RequestMapping("/toMain")
public String toMain(){
   
    return "redirect:/main.html";
}
    //表示必须同时拥有test和admin角色才可以访问
    @Secured("ROLE_test,RLOE_admin")
    @RequestMapping("/demo02")
    @ResponseBody
    public String demo02()
    {
   
        return "demo02";
    }

3)修改配置类
配置类中方法配置保留最基本的配置即可。

protected void configure(HttpSecurity http) throws Exception {
   
    // 表单认证
    http.formLogin()
            .loginProcessingUrl("/login")   //当发现/login时认为是登录,需要执行UserDetailsServiceImpl
            .successForwardUrl("/main")   //此处是post请求
            .loginPage("/login.html");

    // url 拦截
    http.authorizeRequests()
            .antMatchers("/login.html","/noauth.html").permitAll() //login.html不需要被认证
            .anyRequest().authenticated();//所有的请求都必须被认证。必须登录后才能访问。

    //关闭csrf防护
    http.csrf().disable();

}

2.@PreAuthorize和@PostAuthorize

@PreAuthorize和@PostAuthorize都是方法或类级别注解。
@PreAuthorize表示访问方法或类在执行之前先判断权限,大多情况下都是使用这个注解,注解的参数和access()方法参数取值相同,都是权限表达式。
@PostAuthorize表示方法或类执行结束后判断权限,此注解很少被使用到。

2.1实现步骤

1)开启注解
在启动类中开启@PreAuthrize注解

@SpringBootApplication
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class MyApp {
   
    public static void main(String [] args){
   
        SpringApplication.run(MyApp.class,args);
    }
}

2)添加@PreAuthrize注解
在控制器方法上添加@PreAuthorize,参数可以是任何access()支持的表达式

@PreAuthorize("hasRole('abc')")
@RequestMapping("/toMain")
public String toMain(){
   
    return "redirect:/main.html";
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/2351.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 源码安装LAMP

    源码安装LAMP

  • 第一个免杀花指令生成器–不简单的免杀工具(图)

    第一个免杀花指令生成器–不简单的免杀工具(图)第一个免杀花指令生成器–不简单的免杀工具(图)陆续将以前发表在杂志的文章放上来~,发表于《黑客X档案》,第几期忘了,呵呵前言相信做过免杀的朋友都知道花指令吧。加花指令是一种不错的文件免杀方法,而网上公布的花指令和花指令添加器因为里边的花指令被公布了,所以免杀效果不好。有点汇编基础的人就写自己的花指令,但写花指令的过程比较烦,所以我萌生了写一个花指令生成器的想法,首

  • ajax文件上传报400,ajax上传文件报400错误「建议收藏」

    ajax文件上传报400,ajax上传文件报400错误「建议收藏」1、ajaxjQuery.ajax({url:contextUrl+”/accidentAttachment/saveAccidentAttachment”,type:’post’,data:formData,contentType:false,processData:false,error:function(XMLHttpRequest,status){bootbox.ale…

  • 关于引用mshtml的问题[通俗易懂]

    今天看了个验证码识别的代码,其中引用到了mshtml.dll,找了半天原来就是microsoft.mshtml.dll。查这个dll的时候还发现了好几篇关于这个dll添加问题的文章。顺便看了下,原来这个dll有三个,添加引用时要注意了。   第一篇文章:   1.添加引用的问题   一般在开发环境下会在三个地方存有microsoft.mshtml.dll文件。所以在添加引用时,也

  • proc 储过程

    proc 储过程

  • linux防挂马软件,Linux利用Python脚本检测网站挂马程序

    linux防挂马软件,Linux利用Python脚本检测网站挂马程序部署站点后通常首先会生成该站点所有文件的MD5值,如果上线后网站页面内容被篡改(如挂马)等,可以比对之前生成MD5值快速查找去那些文件被更改,为了使系统管理员第一时间发现,可结合crontab或nagios等工具。程序测试如下:#pythoncheck_change.pyUsage:pythoncheck_change.pyupdate/home/wwwrootpythoncheck…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号