首页 > 其他分享 >拦截器实现拦截到人员的id

拦截器实现拦截到人员的id

时间:2024-10-08 14:19:13浏览次数:10  
标签:拦截器 issueId public taskDto release 拦截 id

WebConfig.WebConfig(配置拦截器)

@Configuration
public class WebConfig implements WebMvcConfigurer {

    @Bean
    public CrewInterceptor crewInterceptor() {
        return new CrewInterceptor();
    }

    /*@Autowired
    private CrewInterceptor crewInterceptor;*/

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(crewInterceptor())
                .addPathPatterns("/**"); // 拦截所有路径
    }
}

Interceptor.CrewInterceptor(创建拦截器)

public class CrewInterceptor implements HandlerInterceptor {

    @Autowired
    private CrewMapper crewMapper;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        if(!(handler instanceof HandlerMethod)){
            return true;
        }

        //
        int id=request.getIntHeader("X-Crew-ID");
        try {
            if(crewMapper.selectById(id).getType() >= 4 && crewMapper.selectById(id).getType() <= 0){
                throw new Exception("权限位置,人员信息错误");
            }
        }
        catch (Exception e){
            response.setStatus(401);
            return false;
        }

        LocalStrorageUtil.set(id);
        return true;
    }
}

util.LocalStorageUtil(实用工具)

public class LocalStrorageUtil {

    //提供ThreadLocal对象
    private static ThreadLocal threadLocal = new ThreadLocal();

    public static Object get(){
        return threadLocal.get();
    }

    public static void set(Object o){
        threadLocal.set(o);
    }

    public static void remove(){
        threadLocal.remove();
    }
}

具体例子实现

@Autowired
private TaskService taskService;
 //*发布任务*//

直接使用请求Param Inter issueId
/*@PostMapping("/release")
public Result release(@RequestParam Integer issueId, @RequestBody TaskDto taskDto){
    log.info("id为:{}的人员发布了id为{}的任务",issueId,taskDto.getId());
    taskService.release(issueId,taskDto);
    return Result.success();
}*/

    
拦截器拦截请求体X-Crew-ID,使用工具类LocalStrorageUtil获取到issueId
@PostMapping("/release")
public Result release(@RequestBody TaskDto taskDto){
    log.info("id为:{}的人员发布了id为{}的任务", LocalStrorageUtil.get(),taskDto.getId());
    System.out.println(LocalStrorageUtil.get());
    int issueId= (int) LocalStrorageUtil.get();
    System.out.println(issueId);
    taskService.release(issueId,taskDto);
    return Result.success();
}

具体拦截器和Jwt令牌代码:

https://blog.csdn.net/2301_79890818/article/details/142701328

标签:拦截器,issueId,public,taskDto,release,拦截,id
From: https://blog.csdn.net/2301_79890818/article/details/142758765

相关文章

  • CF708C Centroids [树形DP,换根DP]
    Description给定一棵树。至多进行一次操作:删去一条边,连接一条新边,保证操作完后仍是树。问每个点在进行操作后是否可以成为树的重心。Solution性质\(1\):若一个点不是树的重心,则它的必然有一个大小大于\(\lfloorn/2\rfloor\)的子树。性质\(2\):如果一个点合法,要么它本来......
  • 【源码+文档+调试讲解】基于Android的固定资产借用管理平台
    摘 要固定资产借用管理平台设计的目的是为用户提供使用申请、故障报修、设备归还、意见反馈等管理方面的平台。与PC端应用程序相比,固定资产借用管理平台的设计主要为管理员和用户提供便利。用户可以通过Android及时查看设备信息等。固定资产借用管理平台是在Android操作......
  • 【JS】requestIdleCallback实现分块执行
    点击按钮后,执行一个耗时较长的dom操作,页面很长时间没有响应,给用户一种卡死的现象<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0">&......
  • 【问题解决】remote: parse error: Invalid numeric literal at line 1, column 20,解
    问题现象某同事出现过同样的推送到git仓库报错的问题,报错信息详情如下:Deltacompresionusingupto20threadsCompressingobjects:100%(4/4),done.Writingobjects:100%(5/5),521bytes|521.00KiB/s,done.Total5(delta3),reused0(delta0),pack-reused0r......
  • Android车载音频系统概览
    目录1.什么是Android车载音频系统2.Android声音和声音流2.1Android声音2.2外部声音流2.3输出设备章节说明:本节内容是Android车载音频系统简介。1.什么是Android车载音频系统官方英文名称是:Automotiveaudiosystems由于汽车上无论是音频设备的数量还是......
  • IDEA 代码格式化快捷键设置 中文或者英文语言模式下的IDEA
    在IntelliJIDEA(Windows)中修改代码格式化的快捷键步骤如下:打开IntelliJIDEA,然后点击顶部菜单栏中的File>Settings(设置)在设置窗口中,依次展开Keymap(按键映射)部分。在Keymap页面,你可以看到一个搜索框,输入“FormatCode”(代码格式)来快速定位到格式化代码......
  • divide by zero encountered in log10 my_vmin=np.log10(data['PValue'].min())
     sm=plt.cm.ScalarMappable(cmap='viridis',norm=plt.Normalize(vmin=np.log10(data['PValue'].min()),vmax=np.log10(data['PValue'].max()))) C:\Python310\lib\site-packages\pandas\core\arraylike.py:397:RuntimeWarning:d......
  • IDEA如何快速定位到当前打开文件所在的目录
    前言我们在使用IDEA开发时,经常需要知道当前打开的文件是在哪个目录,这个可以在上方看到具体的目录。但是,当我们需要知道这个目录下有哪些文件或者想要复制当前文件的时候,就需要快速定位当前文件的目录了。那么,我们应该如何操作呢?如何操作定位当前打开文件目录首先,我们打开我们......
  • CF708C Centroids [树形DP,换根DP]
    Description给定一棵树。至多进行一次操作:删去一条边,连接一条新边,保证操作完后仍是树。问每个点在进行操作后是否可以成为树的重心。Solution性质\(1\):若一个点不是树的重心,则它的必然有一个大小大于\(\lfloorn/2\rfloor\)的子树。性质\(2\):如果一个点合法,要么它本来......
  • abc370E Avoid K Partition
    有长度为N的数组A[i]和整数K,需要将A划分成连续子数组,要求每个子数组之和不能为K。问有多少种方案,答案对998244353取模。分析:如果不考虑和不为K的限制,就是个O(n^2)的dp,通过前缀和可以优化成O(n)。现要求子数组和不为K,可以用容斥思想先全部加上,然后减去不符合条件的。#include<bi......