Spring Boot AOP 自定义注解实现权限控制

写在前面

在网上搜了一天,结果居然没有发现什么太详细的spring boot中使用的aop教程,很多照着做了,结果都没有什么效果实现。。无奈,只能去查谷歌,翻官方文档了

附:Spring中aop的官方文档地址:https://docs.spring.io/spring/docs/5.0.12.BUILD-SNAPSHOT/spring-framework-reference/core.html#aop

Aop的说明

在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。

环境说明

基于spring boot 2.0.4 jdk1.8 实现

接口测试工具:insomnia

事先声明:为了方便流程的演示,本文不涉及token的相关操作
若请求头带入携带id,则视为已登录。 
角色信息,用head头的形式提交。

准备阶段

第一步,导入spring boot对spring aop的支持组件

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-aop</artifactId>
</dependency>

此组件是基于spring boot自动配置的spring-boot-starter,可以无需配置文件,与spring boot集成

此外,有的人说直接导入aspectj包的,在这里说明一下,这个包是包含aspectj的,而且spring boot官方推荐使用此依赖来在spring boot中使用aop

第二步:构建Controller,提供入口点

@RestController
public class MyController {
	@GetMapping("hello")
	public String hello(Integer id, String name, Integer age) {
		System.out.println("hello方法执行:id==>" + id + ",name==>" + name + ",age==>" + age);
		return "hi~ 我不需要用户权限";
	}
	@GetMapping("user")
	public String user(Integer id, String name, Integer age) {
		System.out.println("user方法执行:id==>" + id + ",name==>" + name + ",age==>" + age);
		return "hi~ 我需要登陆后才可以访问";
	}
	@GetMapping("admin")
	public String admin(Integer id, String name, Integer age) {
		System.out.println("admin方法执行:id==>" + id + ",name==>" + name + ",age==>" + age);
		return "hi~ 我需要管理员身份才可以访问";
	}
}

controller中为了提供了三个方法,分别是不需要具有权限、登陆即可访问、需要管理员角色才可以访问。

同时为了模拟实际操作,传入参数并执行方法。

测试访问:

准备阶段完毕。开始构建权限操作。

 

权限逻辑操作

第一步:构建注解类

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值