Springboot基于拦截器自定义权限认证讲解

本章主要从零开始讲解基于自定义注解完成拦截器自定义方法的权限认证讲解

需要准备的工作

完成基本springboot框架的搭建

完成与MySQL数据库的连接

第一步先进行mysql表的创建,我们运用RABC模型分别创建五张表,分别为

admin(用户表)Springboot基于拦截器自定义权限认证讲解_第1张图片 admin_role(用户_角色表)Springboot基于拦截器自定义权限认证讲解_第2张图片 role(角色表)Springboot基于拦截器自定义权限认证讲解_第3张图片role_permission(角色_权限表)Springboot基于拦截器自定义权限认证讲解_第4张图片permission(权限表)Springboot基于拦截器自定义权限认证讲解_第5张图片

简单讲解一下RABC的意思是角色的访问控制,有三个基础部分组成:用户,角色,权限

 RABC模型本质是以一个 who是否可以对what进行how的访问操作,对该逻辑表达式是否为true的判断纠结的过程

完成MySQL表的创建和简单了解RABC模型后,我们进行下一步,自定义注解的创建

package com.example.gateway.annotation;

import java.lang.annotation.*;

@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface AuthCheck {
    String name();
    String permission();
}

 我们创建自定义注解AuthCheck,并添加上两个变量,分别为角色名 name以及权限值 value 

该注解规定了凡是被添加上注解的接口只有该注解规定的角色和权限值才能进行访问,没有相应注解的接口可以进行正常访问,而要完成该需求就需要我们用到拦截器HandlerInterceptor。

下一步完成拦截器HandlerInterceptor的创建

package com.example.gateway.config;

import com.example.gateway.dao.AdminRoleDao;
import org.springframework.stereotype.Component;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

@Component
public class AuthCheck implements HandlerInterceptor {
    @Resource
    AdminRoleDao adminRoleDao;

    @Override
    public boolean preHandle(HttpServletRequest request, 

你可能感兴趣的:(spring,boot,java,后端)