AOP结合自定义注解实现权限验证

AOP结合自定义注解实现权限验证

  • 1、概述

  • 2、权限校验场景

  • 3、实现步骤

    • 3.1、创建权限注解

    • 3.2、创建权限服务接口及实现类

    • 3.3、创建切面类

    • 3.4、在需要权限校验的方法上使用自定义注解

    • 3.5、访问Controller中的接口进行测试

  • 4、权限校验进阶

    • 4.1、支持多个权限

    • 4.2、切面类修改

    • 4.3、在需要权限校验的方法上使用自定义注解

    • 4.4、访问Controller中的接口进行测试

  • 5、总结

1、概述

之前一篇文章提到AOP可以实现权限校验,本篇就详细介绍一下AOP是如何基于自定义注解实现权限校验的。

2、权限校验场景

在实际项目中,经常需要对某些接口进行权限校验,比如:用户是否登录、用户是否有权限访问某个接口、用户是否有权限操作某些数据。通过AOP实现权限校验可以避免在每个需要校验的方法中都写一遍逻辑校验,提高代码复用性。

3、实现步骤

3.1、创建权限注解

package com.xxx.service.annotation;

import java.lang.annotation.*;

@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequirePermission {
    String value() default "";//权限标识
}

3.2、创建权限服务接口及实现类

package com.xxx.service.service;

public interface PermissionService {
    boolean hasPermission(String permission);
}
package com.xxx.service.service.impl;

import com.xxx.service.service.PermissionService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class PermissionServiceImpl implements PermissionService {

    //根据实际情况添加下面的服务类
    /*@Autowired
    private UserService userService;*/

    @Override
    public boolean hasPermission(String permission) {

        //获取当前用户
        /*User user = userService.getCurrentUser();
        if (user == null) {
            return false;
        }*/

        //获取用户权限列表
        //List<String> permissions = useService.getUserPermissionList(user.getId());
        List<String> permissions = new ArrayList<>();
        permissions.add("create");
        permission
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值