SpringSecurity-(三)注解实现角色和权限设置

本文最后更新于:February 2, 2022 pm

Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转、依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作。

目录

角色

添加配置

在主启动类中添加注解@EnableGlobalMethodSecurity(securedEnabled = true),表示可以用注解。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.tothefor;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;

@SpringBootApplication
@EnableGlobalMethodSecurity(securedEnabled = true)
public class StudyandMybatisApplication {

public static void main(String[] args) {
SpringApplication.run(StudyandMybatisApplication.class, args);
}

}

注解使用(@Secured)

用法:@Secured({“ROLE_角色1”,”ROLE_角色2”})。注意前缀规范!

1
2
3
4
5
@RequestMapping({"/","/index"})
@Secured({"ROLE_admin","ROLE_vip1"})
public String index(){
return "index";
}

权限

添加配置

在主启动类中添加注解@EnableGlobalMethodSecurity(prePostEnabled = true),表示可以用注解。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
package com.tothefor;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;

@SpringBootApplication
@EnableGlobalMethodSecurity(securedEnabled = true,prePostEnabled = true)
public class StudyandMybatisApplication {

public static void main(String[] args) {
SpringApplication.run(StudyandMybatisApplication.class, args);
}

}

注解使用(@PreAuthorize)

1
2
3
4
5
6
@RequestMapping({"/","/index"})
// @PreAuthorize("hasRole('ROLE_admi')")
@PreAuthorize("hasAnyAuthority('admin')")
public String index(){
return "index";
}

@PostAuthorize

在方法执行后再进行校验。即,不管有没有权限都会进方法,方法执行完之后才会进行权限验证。

1
2
3
4
5
@RequestMapping({"/","/index"})
@PostAuthorize("hasAnyRole('admin')")
public String index(){
return "index";
}