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

2019-06-06 09:44:27 +08:00
 jackzhan

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

使用的是 SpringCloud

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

2806 次点击
所在节点    Java
14 条回复
soupu626
2019-06-06 09:53:40 +08:00
为啥不在拦截器里设线程变量呢
jackzhan
2019-06-06 09:57:49 +08:00
@soupu626 没这样做过。。去查查文档
Shaw314
2019-06-06 09:58:20 +08:00
实现 WebMvcConfigurer 接口,重写 addArgumentResolvers?
jackzhan
2019-06-06 09:59:52 +08:00
@Shaw314 我去看看这个方法
midkingking
2019-06-06 10:00:03 +08:00
addArgumentResolvers
FleyX
2019-06-06 10:03:15 +08:00
在拦截器或者过滤器里处理,取到 token,根据 token 从 redis 查用户信息,然后放到 threadlocal 里,这样只要在这个线程上运行的代码都能方便的获取到。
whp1473
2019-06-06 10:06:00 +08:00
使用拦截器可以做,可以再请求时拦截该请求,解析当中的 token,然后获取 redis 中信息,创建一个 CurrentMember,放入 ThreadLoacl,以及在执行 hander(反射执行方法)时将 CurrentMember 传入第二个参数
zhuzhiqiang
2019-06-06 10:23:24 +08:00
自定义注解 在 AOP 环绕通知中检测解析注解 根据注解信息 把切点方法的 args[n] 赋值自定义值
qinxi
2019-06-06 10:34:40 +08:00
你这个有现成的轮子 叫 spring-session-data-redis
jackzhan
2019-06-06 10:56:43 +08:00
获取当前访问 RequestMapping,怎么去获取呀
EastLord
2019-06-06 11:02:45 +08:00
SecurityContext?
ztlong
2019-06-06 11:09:18 +08:00
HttpServletRequestWrapper 重写 getParameterValues,搭配 Filter 就可以实现你要的能力
hosaos
2019-06-06 13:36:38 +08:00
拦截器+ThreadLocal
kevinWHX
2019-06-06 13:48:44 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/571367

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX