- 加上”/user/me”点击个人主页会自动登出
原因是登录执行login方法,将用户信息保存到了session中,login方法执行完,下一步点击查看个人主页时候,会执行/user/me方法,如果在拦截器配置中取消了对/user/me的拦截,那将不会执行拦截器LoginInterceptor中的代码,因为你都直接不拦截了,但是在LoginInterceptor中,会将session从request中取出来,再从session中取出之前存进去的用户信息,之后将用户信息保存到threadlocal中,如果你都不执行这个拦截器里的代码了,threadlocal中不就是为空了吗?在me()方法中从threadlocal中取用户信息的时候自然就是空null了
于是测试另一种方法,如果在拦截器配置中加入了/user/me那将不会执行LoginInterceptor中的代码,也就是不会从session中拿到用户信息放到threadlocal中去,但是我们可以直接在me()方法里面拿到用户信息并返回,方法是直接从HttpServletRequest中拿到session,之后从session中直接拿到用户信息,代码如图
需要在当前类里面注入HttpServletRequest对象