黑马点评登录成功后点击【我的】会跳转到登录页面 BUG 修复

BUG 说明:用验证码登录成功后,点击【我的】会直接跳转到登录页面,而非是个人信息展示页面,正常应该是跳转到个人信息页面。

分析原因:

查看前端代码文件 login.html 会发现登录成功后会跳转到首页 index.html。

进入首页会发送一些请求,其中关于热门文章的请求到后端,后端处理这个请求可能会爆出空指针异常:

后端处理该请求时报出空指针异常:

分析后端处理代码:

java 复制代码
@GetMapping("/hot")
public Result queryHotBlog(@RequestParam(value = "current", defaultValue = "1") Integer current) {
    // 根据用户查询
    Page<Blog> page = blogService.query()
    .orderByDesc("liked")
    .page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE));
    // 获取当前页数据
    List<Blog> records = page.getRecords();
    // 查询用户
    records.forEach(blog ->{
        // userId 也没有判断是否存在
        Long userId = blog.getUserId();
        // 并没有判断用户是否存在,可能无此用户
        User user = userService.getById(userId);
        blog.setName(user.getNickName());
        blog.setIcon(user.getIcon());
    });
    return Result.ok(records);
}

使用遍历并没有判断用户是否存在,而直接获取其属性,如果用户为空就会报错。

修复代码如下:

java 复制代码
@GetMapping("/hot")
public Result queryHotBlog(@RequestParam(value = "current", defaultValue = "1") Integer current) {
    // 根据用户查询
    Page<Blog> page = blogService.query()
    .orderByDesc("liked")
    .page(new Page<>(current, SystemConstants.MAX_PAGE_SIZE));
    // 获取当前页数据
    List<Blog> records = page.getRecords();
    // 查询用户
    records.forEach(blog ->{
        Long userId = blog.getUserId();
        if (userId == null) {
            return;
        }

        User user = userService.getById(userId);
        // 判断用户是否存在
        if (user == null) {
            return;
        }

        blog.setName(user.getNickName());
        blog.setIcon(user.getIcon());
    });
    return Result.ok(records);
}

修改完后重启后端服务,重新测试发现登录成功后,点击【我的】就不会跳转到登录页面,而是看到用户个人信息。

但是个人信息页面 info.html 有关跳转到登录页面的代码,测试完发现并没有问题,可能就是出现在拦截器代码那部分,有兴趣的同学可以测试一下。

拦截器有关跳转到登录页面的代码,该代码位于 common.js 中:

相关推荐
霸道流氓气质10 分钟前
Spring 事务传播机制与 REQUIRES_NEW
java·数据库·spring
BerryS3N22 分钟前
Java 后端转型大模型:Demo 能跑不等于能上线
java·人工智能·python·java后端·spring ai·langchain4j·大模型转型
心机之蛙qee25 分钟前
Docker Compose 多容器编排
java·docker·容器
秋田君1 小时前
QT_QColorDialog颜色对话框
java·数据库·qt
用户91366296220122 小时前
ViewModelScope 简介与使用
java
上海安当技术2 小时前
老系统零改造接入:旁路代理统一认证实战
java·servlet·架构·kubernetes·jenkins
青山木2 小时前
Hot 100 --- 组合总和
java·数据结构·算法·leetcode
Zane19942 小时前
Lock 接口与 AQS 核心原理:手写理解一把可重入锁是怎么运作的
java·后端
Full Stack Developme2 小时前
SpringBoot 整合 Druid 并列出参数清单
java·spring boot·后端
caishenzhibiao2 小时前
顺势交易矩阵主图 同花顺期货通指标
java·c语言·c#