当前位置: 首页 > article >正文

JAVA开发时获取用户信息失败,分析后端日志信息

从日志信息(见文章最后)来看,JWT 认证过程似乎是成功的。具体来说,以下几点表明认证流程正常:

  1. Token 解析成功:

    • 日志显示 Parsing token: eyJhbGciOiJIUzUxMiJ9.eyJ1c2VySWQiOjEsImV4cCI6MTczNDM2MzUwMH0.jQtaj1sTBCMhIMuT3HXgf8taK82s0HBLKi9NWx3MCKEPrNGC-8k04uXP57uQxGDfqHoidYqNU3wbjKvAQfu_bA
  2. 用户详情加载成功:

    • 日志显示 Loading user details for userId: 1
    • 数据库查询成功,返回了用户 admin 的详细信息。
  3. LoginUser 对象创建成功:

    • 日志显示 Created LoginUser object for user: admin
  4. 认证设置成功:

    • 日志显示 Setting authentication for user: adminAuthentication set successfully

可能的问题

既然认证过程没有问题,那么问题可能出在后续的请求处理或数据获取过程中。以下是一些可能的原因和解决步骤:

  1. API 路径或方法不匹配:

    • 确认 /purchase/plan/generate-order 路径是否正确。
    • 确认请求方法(GET, POST 等)是否与后端 API 预期的一致。
  2. 权限问题:

    • 确认用户 admin 是否有访问 /purchase/plan/generate-order 的权限。
    • 检查角色和权限配置。
  3. 数据验证或业务逻辑错误:

    • 确认前端发送的数据是否符合后端的要求。
    • 检查后端代码中的数据验证逻辑。
  4. 网络问题:

    • 确认网络连接稳定。
    • 检查防火墙或代理设置。
  5. 日志级别:

    • 增加日志级别以获取更多详细的调试信息。

解决步骤

1. 检查 API 路径和方法

确保前端请求的路径和方法与后端 API 配置一致。例如,如果后端期望的是 POST 请求,确保前端也使用 POST 请求。

// 示例:使用 Axios 发送 POST 请求
axios.post('/purchase/plan/generate-order', payload)
  .then(response => {
    console.log('Success:', response.data);
  })
  .catch(error => {
    console.error('Error:', error);
  });
2. 检查权限配置

确认用户 admin 是否有访问 /purchase/plan/generate-order 的权限。检查角色和权限配置文件。

3. 检查数据验证逻辑

确保前端发送的数据符合后端的要求,并且后端的数据验证逻辑没有问题。

// 示例:后端控制器方法
@PostMapping("/purchase/plan/generate-order")
public ResponseEntity<?> generateOrder(@Valid @RequestBody PurchasePlanDTO purchasePlanDTO) {
    // 处理生成订单的逻辑
    try {
        PurchasePlan order = purchasePlanService.generateOrder(purchasePlanDTO);
        return ResponseEntity.ok(order);
    } catch (Exception e) {
        return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(e.getMessage());
    }
}
4. 增加日志级别

增加日志级别以获取更多详细的调试信息。可以在 application.ymllogback.xml 中调整日志级别。

# application.yml
logging:
  level:
    com.mechanical.erp: DEBUG
5. 使用 Postman 测试 API

使用 Postman 手动测试 /purchase/plan/generate-order API,确保其正常工作。

  • URL: http://localhost:8081/purchase/plan/generate-order
  • Method: POST
  • Headers:
    • Authorization: Bearer your_token_here
  • Body: JSON 格式的请求体

示例日志配置

以下是调整日志级别的示例配置:

application.yml
logging:
  level:
    root: INFO
    com.mechanical.erp: DEBUG
logback.xml
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="STDOUT" />
    </root>

    <logger name="com.mechanical.erp" level="debug" additivity="false">
        <appender-ref ref="STDOUT" />
    </logger>
</configuration>

总结

  • 认证过程: 成功解析 Token 并加载用户详情。
  • 可能的问题: API 路径或方法不匹配、权限问题、数据验证或业务逻辑错误、网络问题。
  • 解决方法:
    • 检查 API 路径和方法。
    • 检查权限配置。
    • 检查数据验证逻辑。
    • 增加日志级别以获取更多信息。
    • 使用 Postman 测试 API。

通过这些步骤,你应该能够找到并解决获取用户信息失败的问题。

2024-12-16 20:05:40.783 [http-nio-0.0.0.0-8081-exec-2] INFO  c.m.e.c.security.filter.JwtAuthenticationFilter - Processing request: /purchase/plan/generate-order, token: Bearer eyJhbGciOiJIUzUxMiJ9.eyJ1c2VySWQiOjEsImV4cCI6MTczNDM2MzUwMH0.jQtaj1sTBCMhIMuT3HXgf8taK82s0HBLKi9NWx3MCKEPrNGC-8k04uXP57uQxGDfqHoidYqNU3wbjKvAQfu_bA
2024-12-16 20:05:40.784 [http-nio-0.0.0.0-8081-exec-2] INFO  c.m.erp.common.security.service.TokenService - Got Authorization header: Bearer eyJhbGciOiJIUzUxMiJ9.eyJ1c2VySWQiOjEsImV4cCI6MTczNDM2MzUwMH0.jQtaj1sTBCMhIMuT3HXgf8taK82s0HBLKi9NWx3MCKEPrNGC-8k04uXP57uQxGDfqHoidYqNU3wbjKvAQfu_bA
2024-12-16 20:05:40.786 [http-nio-0.0.0.0-8081-exec-2] INFO  c.m.erp.common.security.service.TokenService - Parsing token: eyJhbGciOiJIUzUxMiJ9.eyJ1c2VySWQiOjEsImV4cCI6MTczNDM2MzUwMH0.jQtaj1sTBCMhIMuT3HXgf8taK82s0HBLKi9NWx3MCKEPrNGC-8k04uXP57uQxGDfqHoidYqNU3wbjKvAQfu_bA
2024-12-16 20:05:40.790 [http-nio-0.0.0.0-8081-exec-2] INFO  c.m.erp.common.security.service.TokenService - Loading user details for userId: 1
Creating a new SqlSession
SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@21c8f906] was not registered for synchronization because synchronization is not active
JDBC Connection [HikariProxyConnection@1289494857 wrapping ConnectionID:1 ClientConnectionId: fee27cee-7674-45b8-9a15-b618552e14c4] will not be managed by Spring       
==>  Preparing: SELECT user_id, username, nickname, email, phone, sex, avatar, password, status, del_flag, create_by, create_time, update_by, update_time, remark FROM sys_user where user_id = ?
==> Parameters: 1(Long)
<==    Columns: user_id, username, nickname, email, phone, sex, avatar, password, status, del_flag, create_by, create_time, update_by, update_time, remark
<==        Row: 1, admin, 管理员, admin@example.com, 13800138000, 1, null, $2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2, 0, 0, admin, 2024-12-12 16:53:16.82, null, 2024-12-13 13:26:50.577, 管理员
<==      Total: 1
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@21c8f906]
2024-12-16 20:05:40.801 [http-nio-0.0.0.0-8081-exec-2] INFO  c.m.erp.common.security.service.TokenService - Created LoginUser object for user: admin
2024-12-16 20:05:40.802 [http-nio-0.0.0.0-8081-exec-2] INFO  c.m.e.c.security.filter.JwtAuthenticationFilter - Got login user from token: admin
2024-12-16 20:05:40.802 [http-nio-0.0.0.0-8081-exec-2] INFO  c.m.e.c.security.filter.JwtAuthenticationFilter - Setting authentication for user: admin
2024-12-16 20:05:40.804 [http-nio-0.0.0.0-8081-exec-2] INFO  c.m.e.c.security.filter.JwtAuthenticationFilter - Authentication set successfully

http://www.kler.cn/a/444163.html

相关文章:

  • C 数组:索引魔杖点化的数据星图阵列
  • 安全算法基础(一)
  • aioice里面candidate固定UDP端口测试
  • 多协议视频监控汇聚/视频安防系统Liveweb搭建智慧园区视频管理平台
  • 本地缓存和Redis缓存 存储更新时间的更新套路
  • 探索Moticon智能传感器鞋垫OpenGo的功能与优势
  • spring @Mapper Converter转换泛型异常
  • Kafka Streams 在监控场景的应用与实践
  • 使用正则表达式提取PDF文件页数的实现方案
  • 观察者模式(sigslot in C++)
  • docker pull 报错Get “https://registry-1.docker.io/v2/“: net/http: request canceled while waiting for c
  • CSS学习-第三天
  • 基于springboot的在线政务服务系统的设计与实现-仅供学习
  • 实景视频与模型叠加融合?
  • YOLOv8改进 | 损失函数 | 结合NWD的Shape-IoU【全网独家】
  • 广场维修:JAVA
  • Reactor 响应式编程(第三篇:R2DBC)
  • 大数据治理:构建数据驱动的智慧教学体系
  • 利用两种方式分别实现单例模式(懒汉式、饿汉式)
  • kafka 本地 windos部署详细教学,轻松使用本地kafka进行消息推送接收!
  • MQTT协议介绍与C++服务端客户端实现
  • Qt5与Qt6中的高DPI缩放属性解析
  • mysql中与并发相关的问题?
  • matlab的一些时间函数【转】
  • AGM FPGA如何配置上拉或者下拉电阻
  • 按照字幕拆解视频实战