【security】security getAuthentication().getPrincipal()只能获取用户名

debug跟踪 发现setAuthentication(result)的时候 都是正常的 ,principal为实体对象 ,但是get的时候就变成字符串了

项目背景:springcloud项目 有多模块,在B模块中 引入了A模块(因为需要用到A模块的某个@Component注解修饰的bean)

正确操作:B模块application中需要指定 ComponentScan (不指定默认只扫描本包 及B模块包下Component)
旧:

@ComponentScan("com.xx.*") 

新:
这样就把xx项目所有Component都扫描了,
当改成正确扫描后 getPrincipal()成功获取到了实体对象

@ComponentScan({"com.xx.A.*","com.xx.B.*"})

更新

现在复盘自己数年前写的博客… 写的啥玩意啊这是,时间可以穿越我得回去扇自己两耳光…
不过这种变化 也证明这数年来自己写作能力和分析能力都变强了。

找到了当时的代码, 当前启动类的包是com.station.transportation
在transportation项目中 使用到了api的某个bean的方法,
一开始ComponentScan是没有加上"com.station.report.api"的,
所以间接导致了security的问题。
在这里插入图片描述

那为什么需要指定扫描包呢?明明我们很多时候直接引入就好了,
为了彻底搞清楚数年前的疑惑,特地翻了一下report.api 模块的pom文件,果不其然 错误的将package定义成了pom格式,正确的应该是jar格式。(定义不当会造成很多奇怪的问题)
pom一般用于父子模块管理,jar为可打包可引入的格式

在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孟秋与你

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值