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: INFOcom.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.rhkb.cn/news/493239.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将4G太阳能无线监控的视频接入电子监控大屏,要考虑哪些方面?

随着科技的飞速发展&#xff0c;4G太阳能无线监控系统以其独特的优势在远程监控领域脱颖而出。这种系统结合了太阳能供电的环保特性和4G无线传输的便捷性&#xff0c;为各种环境尤其是无电或电网不稳定的地区提供了一种高效、可靠的视频监控解决方案。将这些视频流接入大屏显示…

有监督学习 vs 无监督学习:机器学习的两大支柱

有监督学习 vs 无监督学习&#xff1a;机器学习的两大支柱 有监督学习 vs 无监督学习&#xff1a;机器学习的两大支柱一、有无“老师”来指导二、解决的问题类型不同三、模型的输出不同 有监督学习 vs 无监督学习&#xff1a;机器学习的两大支柱 在机器学习的奇妙世界里&#…

SLURM资料

SLURM资料 Quick Start 基本概念 job step&#xff1a; 作业步&#xff0c;单个作业可以有多个作业步partition&#xff1a;分区&#xff0c;作业需要在特定分区中运行&#xff08;理解为定义了队列&#xff0c;每个队列中包含不同节点&#xff09;QOS&#xff1a;服务质量&a…

App自动化之dom结构和元素定位方式(包含滑动列表定位)

DOM结构 先来看几个名词和解释&#xff1a; dom: Document Object Model 文档对象模型 dom应用: 最早应用于html和js的交互。界面的结构化描述&#xff0c; 常见的格式为html、xml。核心元素为节点和属性 xpath: xml路径语言&#xff0c;用于xml 中的节点定位&#xff0c;X…

Vulhub:Redis[漏洞复现]

4-unacc(Redis未授权代码执行) 启动漏洞环境 docker-compose up -d 阅读vulhub给出的漏洞文档 cat README.zh-cn.md # Redis 4.x/5.x 主从复制导致的命令执行 Redis是著名的开源Key-Value数据库&#xff0c;其具备在沙箱中执行Lua脚本的能力。 Redis未授权访问在4.x/5.0.5以…

imx6ull qt多页面控制系统(正点原子imx系列驱动开发)

开题答辩完了也考完了四六级&#xff0c;赶紧来更新一下一个月前留下的坑吧 QAQ首先&#xff0c;因为毕业设计需要用到这些知识所以就从网络上找了一个智能车机系统&#xff0c;借鉴了一下大佬的项目思路&#xff0c;缝缝补补一个月终于完成了这一内容。 在这里先感谢从两位大佬…

前端小白学习之路-Vben探索 vite 配置 - 1/50

目的 为ApiHug 寻找一个前端解决方案前端背景知识缺乏整盘操作&#xff1a;前后全栈80% 中小规模项目提效 30% 全员全栈快速构建高度模块化AI Native... 所以 裸学前端高举高打&#xff0c;直接从复杂项目拆解AI 助手高度依赖后端癖严重&#xff0c;高度模块&#xff0c; 结构化…

Docker:Dockerfile(补充四)

这里写目录标题 1. Dockerfile常见指令1.1 DockerFile例子 2. 一些其他命令 1. Dockerfile常见指令 简单的dockerFile文件 FROM openjdk:17LABEL authorleifengyangCOPY app.jar /app.jarEXPOSE 8080ENTRYPOINT ["java","-jar","/app.jar"]# 使…

谷歌浏览器的扩展市场使用指南

谷歌浏览器的扩展市场为用户提供了丰富多样的功能扩展&#xff0c;可以大幅提升浏览体验。本文将为你详细介绍如何使用谷歌浏览器的扩展市场&#xff0c;包括安装、管理和一些推荐的无障碍工具、图标重置方法和便捷操作技巧。&#xff08;本文由https://chrome.py010.cn/的作者…

04、Vue与Ajax

4.1 发送AJAX异步请求的方式 发送AJAX异步请求的常见方式包括&#xff1a; 4.1.1. 原生方式 使用浏览器内置的JS对象XMLHttpRequest const xhr new XMLHttpRequest() xhr.open() xhr.send() xhr.onreadystatechange function(){} 4.1.2. 原生方式 使用浏览器内置的JS函…

网络安全概论——防火墙原理与设计

一、防火墙概述 防火墙是一种装置&#xff0c;它是由软件/硬件设备组合而成&#xff0c;通常处于企业的内部局域网与 Internet 之间&#xff0c;限制 Internet 用户对内部网络的访问以及管理内部用户访问 Internet 的权限。换言之&#xff0c;一个防火墙在一个被认为是安全和可…

南城云趣:智能云平台,杜绝电动车充电安全隐患

电动自行车作为绿色低碳出行的主要方式之一,受到无数市民的推崇,而电动自行车数量的急剧上涨,也严重增加小区管理的负担。记者调查发现,目前电动自行车缺乏有效的管理,使得带车或电瓶上楼充电、乱停乱放、车辆容易被盗等安全问题日益突出,给社区消防安全和管理带来严峻的挑战。…

Linux 文件系统目录结构及其简要介绍

&#x1f44b; 欢迎来到“Linux学习&#xff1a;Linux 文件系统目录结构”篇&#xff01; 接下来让我们一起来学习一下Linux 文件系统目录结构吧&#xff01;祝你有所收获&#xff01; 文章目录 总结表格Linux 文件系统目录结构及其简要介绍补充小资源 小伙伴们都知道&#xff…

【服务器】MyBatis是如何在java中使用并进行分页的?

MyBatis 是一个支持普通 SQL 查询、存储过程和高级映射的持久层框架。它消除了几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java 的 POJO&#xff08;Plain Old Java Objects&#xff0c;普通老式 …

Elasticsearch-DSL高级查询操作

一、禁用元数据和过滤数据 1、禁用元数据_source GET product/_search {"_source": false, "query": {"match_all": {}} }查询结果不显示元数据 禁用之前: {"took" : 0,"timed_out" : false,"_shards" : {&quo…

使用 UniApp 在微信小程序中实现 SSE 流式响应

概述 服务端发送事件(Server-Sent Events, SSE)是一种允许服务器向客户端推送实时更新的技术。SSE 提供了一种单向的通信通道,服务器可以持续地向客户端发送数据,而不需要客户端频繁发起请求。这对于需要实时更新的应用场景非常有用。 流式传输的特点是将数据逐步传输给客…

【Tomcat】第六站(最后一站啦!):数据的返回

1. 引言 前端资源比如html页面&#xff0c;进行返回。截止到目前我们写的项目架构不支持前端页面&#xff08;静态资源 &#xff09;。 2. 数据的返回 2.1 准备 为了能够写前端页面&#xff0c;新建一个项目。选择Maven项目&#xff0c;下一步&#xff0c;下一步。 加载完…

electron-vite【实战系列教程】

创建项目 https://blog.csdn.net/weixin_41192489/article/details/144442262 安装必要的插件 UI 库 element-plus npm install element-plus --save安装 element-plus 图标 npm install element-plus/icons-vue安装插件 – 自动注册组件 vs 自动导入框架方法 npm install -…

信号处理相关的东东(学习解惑)

信号处理相关的东东&#xff08;学习解惑&#xff09; 所有内容学习自知乎专栏&#xff0c;https://www.zhihu.com/column/xinhao&#xff0c;写的很好&#xff0c;值得反复学习 时频域分析的一些常用概念 FROM&#xff1a;https://zhuanlan.zhihu.com/p/35742606 1、相加性…

[Python学习日记-73] 面向对象实战1——答题系统

[Python学习日记-73] 面向对象实战1——答题系统 简介 需求模型——5w1h8c 领域模型 设计模型 实现模型 案例&#xff1a;年会答题系统 简介 在学习完面向对象之后你会发现&#xff0c;你还是不会自己做软件做系统&#xff0c;这是非常正常的&#xff0c;这是因为计算机软…