V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jackzhan
V2EX  ›  Java

想做这么一个功能,在访问接口的时候,根据 token 获取 redis 中的当前用户的信息,通过某种方式把这个用户信息注入到下面接口中的 CurrentMember 中,想请教一下这个方式应该如何来实现,获取有什么好的思路吗?

  •  
  •   jackzhan · 2019-06-06 09:44:27 +08:00 · 2993 次点击
    这是一个创建于 1989 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想做这么一个功能,在访问接口的时候,根据 token 获取 redis 中的当前用户的信息,通过某种方式把这个用户信息注入到下面接口中的 CurrentMember 中,想请教一下这个方式应该如何来实现,获取有什么好的思路吗

    使用的是 SpringCloud

    @PostMapping("/createUser")
    public ResultResponse createUser(@RequestBody MemberQueryRequest request, CurrentMember member){
    return memberService.createUser(request);
    }

    14 条回复    2019-06-06 13:48:44 +08:00
    soupu626
        1
    soupu626  
       2019-06-06 09:53:40 +08:00
    为啥不在拦截器里设线程变量呢
    jackzhan
        2
    jackzhan  
    OP
       2019-06-06 09:57:49 +08:00
    @soupu626 没这样做过。。去查查文档
    Shaw314
        3
    Shaw314  
       2019-06-06 09:58:20 +08:00 via Android   ❤️ 1
    实现 WebMvcConfigurer 接口,重写 addArgumentResolvers?
    jackzhan
        4
    jackzhan  
    OP
       2019-06-06 09:59:52 +08:00
    @Shaw314 我去看看这个方法
    midkingking
        5
    midkingking  
       2019-06-06 10:00:03 +08:00   ❤️ 1
    addArgumentResolvers
    FleyX
        6
    FleyX  
       2019-06-06 10:03:15 +08:00
    在拦截器或者过滤器里处理,取到 token,根据 token 从 redis 查用户信息,然后放到 threadlocal 里,这样只要在这个线程上运行的代码都能方便的获取到。
    whp1473
        7
    whp1473  
       2019-06-06 10:06:00 +08:00
    使用拦截器可以做,可以再请求时拦截该请求,解析当中的 token,然后获取 redis 中信息,创建一个 CurrentMember,放入 ThreadLoacl,以及在执行 hander(反射执行方法)时将 CurrentMember 传入第二个参数
    zhuzhiqiang
        8
    zhuzhiqiang  
       2019-06-06 10:23:24 +08:00
    自定义注解 在 AOP 环绕通知中检测解析注解 根据注解信息 把切点方法的 args[n] 赋值自定义值
    qinxi
        9
    qinxi  
       2019-06-06 10:34:40 +08:00   ❤️ 1
    你这个有现成的轮子 叫 spring-session-data-redis
    jackzhan
        10
    jackzhan  
    OP
       2019-06-06 10:56:43 +08:00
    获取当前访问 RequestMapping,怎么去获取呀
    EastLord
        11
    EastLord  
       2019-06-06 11:02:45 +08:00
    SecurityContext?
    ztlong
        12
    ztlong  
       2019-06-06 11:09:18 +08:00
    HttpServletRequestWrapper 重写 getParameterValues,搭配 Filter 就可以实现你要的能力
    hosaos
        13
    hosaos  
       2019-06-06 13:36:38 +08:00
    拦截器+ThreadLocal
    kevinWHX
        14
    kevinWHX  
       2019-06-06 13:48:44 +08:00   ❤️ 1
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5389 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 07:35 · PVG 15:35 · LAX 23:35 · JFK 02:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.