Redis-黑马点评中短信验证跳转问题
本文分析了黑马点评项目中短信验证成功却跳转首页的问题及解决方案。前端修改包括:1)调整登录后的页面跳转逻辑,使其保持在"我的"页面;2)修复common.js中拦截器使用旧token的问题,改为从sessionStorage实时获取。后端修改涉及:1)调整拦截器过滤路径配置;2)修复LoginInterceptor中UserHolder.saveUser()方法的类型转换问题,
在黑马点评的短信验证部分,出现了验证成功却跳转首页问题。


首先修改前端的代码,在点击登录后,重定向到了首页,需要修改代码,不让它跳转到首页,让其仍在“我的”页面,然后使其可以触发“user/me” 接口,如下图:
login.html文件

修改location.href=”/info.html”
然后修改js文件下的common.js文件

问题在common.js:登录后拦截器仍使用初始化时的旧 token 变量,后续请求头里没有新 token,/user/me 返回 401,前端被重定向回登录/首页。
解决:将请求拦截器改为每次从 sessionStorage 读取 token,确保登录后立刻带上新 token。
后端部分:
拦截器过滤 excludePathPatterns 不需要加“/user/me”因为它本来就是要拦截的。
需要修改LoginInterceptor类中的的UserHolder.saveUser(user);
因为UserHolder中线程ThreadLocal的泛型是UserDTO,而user是User类,参数类型不一致报错。
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//1. 获取session
HttpSession session = request.getSession();
//2. 判断session中是否存在用户
Object user = session.getAttribute("user");
//3. 不存在,拦截,返回401
if (user == null){
response.setStatus(401);
return false;
}
//4. 存在,保存在ThreadLocal
UserDTO userDTO = new UserDTO();
BeanUtils.copyProperties((User)user,userDTO);
UserHolder.saveUser(userDTO);
//5. 放行
return true;
}
然后登录就可以是以下画面了:

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)