springboot 项目整合拦截器

简介: springboot 项目整合拦截器


springboot 项目整合拦截器


springboot 项目整合拦截器


创建拦截器 PermissionIntercepter

package com.dongao.project.aspectj.interceptor;
import com.dongao.project.api.domain.Constants;
import com.dongao.project.aspectj.json.Json;
import com.ruoyi.common.utils.ServletUtils;
import com.ruoyi.framework.web.domain.AjaxResult;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
 * @author: dongao
 * @create: 2019/10/31
 */
@Component
public abstract class PermissionIntercepter extends HandlerInterceptorAdapter {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
    {
        if (this.isBlack(request)) {
            AjaxResult ajaxResult = new AjaxResult();
            ajaxResult.put("code", Constants.CODE.USER_IN_BLACKLIST.getValue());
            ajaxResult.put("msg", Constants.CODE.USER_IN_BLACKLIST.getDescription());
            ajaxResult.put("obj", "");
            ServletUtils.renderString(response, Json.marshal(ajaxResult));
            return false;
        }
        return true;
    }
    /**
     * 判断是否是黑名单用户
     * @param request
     * @return
     * @throws Exception
     */
    public abstract boolean isBlack(HttpServletRequest request) throws Exception;
}


创建实现类,用于实现具体业务 UserBlackIntercepter

package com.dongao.project.aspectj.interceptor.impl;
import com.dongao.project.api.domain.Constants;
import com.dongao.project.aspectj.interceptor.PermissionIntercepter;
import com.dongao.project.utils.RedisUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
/**
 * 判断是否是黑名单用户
 * @author: dongao
 * @create: 2019/10/31
 */
@Component
public class UserBlackIntercepter extends PermissionIntercepter {
    private static final Logger logger = LoggerFactory.getLogger(UserBlackIntercepter.class);
    @Override
    public boolean isBlack(HttpServletRequest request) throws Exception {
        String userId = request.getParameter("userId");
        logger.info("开始校验当前用户userId:【{}】是否是黑名单用户======",userId);
        boolean result = RedisUtils.hasKey(Constants.COMMUNITY_USER_BLACK_KEY + userId);
        logger.info("校验当前用户userId:【{}】是否是黑名单用户结果result:【{}】======",userId,result);
        return result;
    }
}


创建配置类实现WebMvcConfigurer

package com.dongao.project.config;
import com.dongao.project.aspectj.interceptor.PermissionIntercepter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
 * @ClassName PermissionConfig
 * @Author dongao
 * @Version 1.0
 * @Date 2019/10/31 0028 下午 8:07
 **/
@Configuration
public class PermissionConfig implements WebMvcConfigurer  {
    @Autowired
    private PermissionIntercepter permissionIntercepter;
    /**
     * 自定义拦截规则
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry)
    {
        String permissionUrl = ConfigConstant.permissionUrl;
        String[] split = permissionUrl.split(",");
        registry.addInterceptor(permissionIntercepter).addPathPatterns(split);
    }
}


拦截路径如下

permission.urlPatterns=/s1/v1/course/addCours,\
  /s1/v1/courseCom/addCourCom


相关文章
|
1月前
|
前端开发 Java
表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
文章通过一个表白墙/留言墙的初级SpringBoot项目实例,详细讲解了如何进行前后端开发,包括定义前后端交互接口、创建SpringBoot项目、编写前端页面、后端代码逻辑及实体类封装的全过程。
64 3
表白墙/留言墙 —— 初级SpringBoot项目,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
1月前
|
Java 数据库连接 Maven
springBoot:项目建立&配置修改&yaml的使用&resource 文件夹(二)
本文档介绍了如何创建一个基于Maven的项目,并配置阿里云仓库、数据库连接、端口号、自定义启动横幅及多环境配置等。同时,详细说明了如何使用YAML格式进行配置,以及如何处理静态资源和模板文件。文档还涵盖了Spring Boot项目的`application.properties`和`application.yaml`文件的配置方法,包括设置数据库驱动、URL、用户名、密码等关键信息,以及如何通过配置文件管理不同环境下的应用设置。
|
1月前
|
NoSQL Java MongoDB
Springboot WebFlux项目结合mongodb进行crud
这篇文章介绍了如何使用Spring Boot WebFlux框架结合MongoDB进行基本的CRUD(创建、读取、更新、删除)操作,包括项目设置、实体类和Repository的创建、控制器的实现以及配置文件的编写。
43 0
Springboot WebFlux项目结合mongodb进行crud
|
9天前
|
Java 应用服务中间件
SpringBoot获取项目文件的绝对路径和相对路径
SpringBoot获取项目文件的绝对路径和相对路径
45 1
SpringBoot获取项目文件的绝对路径和相对路径
|
4天前
|
分布式计算 关系型数据库 MySQL
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型
SpringBoot项目中mysql字段映射使用JSONObject和JSONArray类型 图像处理 光通信 分布式计算 算法语言 信息技术 计算机应用
22 8
|
29天前
|
JavaScript 前端开发 Java
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
这篇文章详细介绍了如何在前端Vue项目和后端Spring Boot项目中通过多种方式解决跨域问题。
298 1
解决跨域问题大集合:vue-cli项目 和 java/springboot(6种方式) 两端解决(完美解决)
|
11天前
|
JavaScript 前端开发 Java
SpringBoot项目的html页面使用axios进行get post请求
SpringBoot项目的html页面使用axios进行get post请求
31 2
|
11天前
|
前端开发 Java Spring
SpringBoot项目thymeleaf页面支持词条国际化切换
SpringBoot项目thymeleaf页面支持词条国际化切换
35 2
|
11天前
|
JSON Java 数据库
SpringBoot项目使用AOP及自定义注解保存操作日志
SpringBoot项目使用AOP及自定义注解保存操作日志
27 1
|
13天前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
下一篇
无影云桌面