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)


相关推荐

  • 未来之路作为创业者_如何看待读图时代

    未来之路作为创业者_如何看待读图时代距离4月11日-14日百度联盟峰会已经过去一个多月了,这一段与许多站长谈论最多的是百度创始人李彦宏在峰会上的演讲,其中创业者三大机会尤最。演讲更多的是从战略角度的高度概括,因此笔者主要想在大家的帮助下再深入分析一下读图时代的创业机会,主要是交流,通过交流更具体一些。在分析、交流之前,还是先引用一些媒体报道,以免失之毫厘,谬以千里。    4月12日上午消息,百度公司…

  • git取消跟踪已版本控制的文件

    git取消跟踪已版本控制的文件

    2021年11月22日
  • linux c——dup( )和dup2( )函数详解

    dup()函数和dup2()函数书上在文件操作那一章,已经讲过了,这周看重定向这块,发现它挺重要,就再看了回,记录下。1、dup函数头文件及函数定义:#include<unistd.h>intdup(intoldfd);dup用来复制参数oldfd所指的文件描述符。当复制成功是,返回最小的尚未被使用过的文件描述符,若有错误则返回-1.错误代码存入errno中…

  • 保姆级-红米AC2100之breed不死后台刷写openwrt官方版&第三方改良版「建议收藏」

    保姆级-红米AC2100之breed不死后台刷写openwrt官方版&第三方改良版「建议收藏」刷机有风险!!!后果自负准备1.红米AC21002.基础的电脑操作breed不死后台第一步:环境准备进入小米路由器原始的管理页,miwifi.com或者192.168.31.1登录之后,检查固件版本第二步:降级这里必须降级,我们降到到2.0.7降级包地址链接提取码:tenk然后等几分钟连接上降级后的wifi,正常是redmi开头无密码连上后重新进入后台192.168.31.1自行设置向导,这里忽略然后检查一下系统版本是否降级成功第三步:写入breed此时注意浏览器

    2022年10月29日
  • javascript邮箱正则表达式_email正则表达式

    javascript邮箱正则表达式_email正则表达式”^\s*\w+(?:\.{0,1}[\w-]+)@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)\.[a-zA-Z]+\s*$”这个是一个企业级的程序里copy出来的。合法E-mail地址:必须包含一个并且只有一个符号“@”不允许出现“@.”或者.@允许“@”前的字符中出现“+”不允许“+”在最前面,或者“+@”正则表达式如下:^(\w+((-\w+)|(.\w+)))+\w+…

  • robotium官网[通俗易懂]

    robotium官网[通俗易懂]官网地址:https://code.google.com/p/robotium/

发表回复

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

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