想做这么一个功能,在访问接口的时候,根据 token 获取 redis 中的当前用户的信息,通过某种方式把这个用户信息注入到下面接口中的 CurrentMember 中,想请教一下这个方式应该如何来实现,获取有什么好的思路吗
使用的是 SpringCloud
@PostMapping("/createUser")
public ResultResponse createUser(@RequestBody MemberQueryRequest request, CurrentMember member){
return memberService.createUser(request);
}
1
soupu626 2019-06-06 09:53:40 +08:00
为啥不在拦截器里设线程变量呢
|
3
Shaw314 2019-06-06 09:58:20 +08:00 via Android 1
实现 WebMvcConfigurer 接口,重写 addArgumentResolvers?
|
5
midkingking 2019-06-06 10:00:03 +08:00 1
addArgumentResolvers
|
6
FleyX 2019-06-06 10:03:15 +08:00
在拦截器或者过滤器里处理,取到 token,根据 token 从 redis 查用户信息,然后放到 threadlocal 里,这样只要在这个线程上运行的代码都能方便的获取到。
|
7
whp1473 2019-06-06 10:06:00 +08:00
使用拦截器可以做,可以再请求时拦截该请求,解析当中的 token,然后获取 redis 中信息,创建一个 CurrentMember,放入 ThreadLoacl,以及在执行 hander(反射执行方法)时将 CurrentMember 传入第二个参数
|
8
zhuzhiqiang 2019-06-06 10:23:24 +08:00
自定义注解 在 AOP 环绕通知中检测解析注解 根据注解信息 把切点方法的 args[n] 赋值自定义值
|
9
qinxi 2019-06-06 10:34:40 +08:00 1
你这个有现成的轮子 叫 spring-session-data-redis
|
10
jackzhan OP 获取当前访问 RequestMapping,怎么去获取呀
|
11
EastLord 2019-06-06 11:02:45 +08:00
SecurityContext?
|
12
ztlong 2019-06-06 11:09:18 +08:00
HttpServletRequestWrapper 重写 getParameterValues,搭配 Filter 就可以实现你要的能力
|
13
hosaos 2019-06-06 13:36:38 +08:00
拦截器+ThreadLocal
|
14
kevinWHX 2019-06-06 13:48:44 +08:00 1
|