Open zhangsunsuochang1 opened 2 years ago
你好,原理是:通过自定义拦截器,拦截方法;然后根据请求方法中携带的cookie从redis中获取用户信息,就为UserVo。 实现参考: (1)拦截器accessInterceptor和userArgumentResolver注册代码在:dis-seckill-gateway\src\main\java\com\seckill\dis\gateway\config\WebConfig.java中。 (2)AccessInterceptor:dis-seckill-gateway\src\main\java\com\seckill\dis\gateway\config\access\AccessInterceptor.java中, preHandle里面的getUser方法,可以根据cookie获取用户信息,然后保存在ThreadLocal中。 (3)userArgumentResolver:dis-seckill-gateway\src\main\java\com\seckill\dis\gateway\user\UserController.java中, resolveArgument方法通过getUser方法从ThreadLocal中获取用户信息,然后自动解析为方法中UserVo参数。
你好,原理是:通过自定义拦截器,拦截方法;然后根据请求方法中携带的cookie从redis中获取用户信息,就为UserVo。 实现参考: (1)拦截器accessInterceptor和userArgumentResolver注册代码在:dis-seckill-gateway\src\main\java\com\seckill\dis\gateway\config\WebConfig.java中。 (2)AccessInterceptor:dis-seckill-gateway\src\main\java\com\seckill\dis\gateway\config\access\AccessInterceptor.java中, preHandle里面的getUser方法,可以根据cookie获取用户信息,然后保存在ThreadLocal中。 (3)userArgumentResolver:dis-seckill-gateway\src\main\java\com\seckill\dis\gateway\user\UserController.java中, resolveArgument方法通过getUser方法从ThreadLocal中获取用户信息,然后自动解析为方法中UserVo参数。
非常感谢及时的解答,我还有一个小问题
OrderController 中
public Result
这里的model参数又是从哪里来的呢
你好,在这个函数里面,model是没有用到的参数,可以去掉。 当前端用到Thymeleaf 模板时,Model 对象负责在控制器和展现数据的视图之间传递数据。参考知识:https://www.cnblogs.com/youcoding/p/13763621.html。 项目中代码事例:templates/goods_detail.html和goods/GoodsController.java
controller中的每个函数好像都会自带UserVo参数,但是前端ajax好像并没有传递用户的信息,请问这是什么原理呢