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


相关文章
|
Java Spring 容器
SpringBoot中添加拦截器,在拦截器中注入其他类的时候出现空指针异常解决办法
SpringBoot中添加拦截器,在拦截器中注入其他类的时候出现空指针异常解决办法
326 0
|
Java 应用服务中间件 Maven
传统maven项目和现在spring boot项目的区别
Spring Boot:传统 Web 项目与采用 Spring Boot 项目区别
355 0
传统maven项目和现在spring boot项目的区别
|
XML Java 数据库连接
创建springboot项目的基本流程——以宠物类别为例
创建springboot项目的基本流程——以宠物类别为例
127 0
创建springboot项目的基本流程——以宠物类别为例
|
存储 机器学习/深度学习 IDE
SpringBoot 项目与被开发快速迁移|学习笔记
快速学习 SpringBoot 项目与被开发快速迁移
157 0
SpringBoot 项目与被开发快速迁移|学习笔记
|
安全 Java 关系型数据库
SpringSecurity与SpringBoot在集中式项目中整合步骤说明|学习笔记
快速学习SpringSecurity与SpringBoot在集中式项目中整合步骤说明
108 0
|
Java Spring
自定义SpringBoot项目的启动Banner
``Banner``是``SpringBoot``框架一个特色的部分,其设计的目的无非就是一个框架的标识,其中包含了版本号、框架名称等内容,既然``SpringBoot``为我们提供了这个模块,它肯定也是可以更换的这也是``Spring``开源框架的设计理念。
|
前端开发 Java 应用服务中间件
基于springboot+mybatisplus+vue-科技项目评审及专家库管理系统
基于springboot+mybatisplus+vue-科技项目评审及专家库管理系统
193 0
基于springboot+mybatisplus+vue-科技项目评审及专家库管理系统
|
Java Spring
【Java】【Spring Boot】CP01:创建一个SpringBoot项目(Spring Initializr)
【Java】【Spring Boot】CP01:创建一个SpringBoot项目(Spring Initializr)
209 0
【Java】【Spring Boot】CP01:创建一个SpringBoot项目(Spring Initializr)
|
SQL 弹性计算 前端开发
使用aliyunECS服务器+宝塔面板部署springboot后端项目并测试接口
在部署过程中遇到了很多问题,解决起来也是十分繁琐,这里写个笔记记录一下遇到的问题和思路 这里我先打算测试以下后端接口,前端代码还没有进行运行。 还没有购买域名,因为域名需要备案时间要一周所以暂时使用公网ip进行访问。
|
消息中间件 NoSQL Java
47K Star 的SpringBoot+MyBatis+docker电商项目,附超详细的文档
该项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统:首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统:商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。 该项目使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、