cotroller中使用SecurityContextHolder.getContext().getAuthentication()返回null值

昨晚按老师的要求准备一个简单的oauth2授权+资源服务器用来学习vue+axios前后端分离开发。在controller里尝试获取username的时候居然空指针异常了,明明是拿之前整合的代码来用的说。

定位到authentication为null,为啥呢,明明token都能正常拿到的
在这里插入图片描述

然后我傻fufu的居然尝试从session中获取
在这里插入图片描述

我在postman里用token测试,sessio里自然没有SPRING_SECURITY_CONTEXT。
果不其然,也是空指针null;
在这里插入图片描述

百度到的很多结果都是旧版本的springsecurity升级新版本才出现(也可能是我关键词没选好)
最后还是在Google找到了原因:只有访问受保护的资源才会产生authentication对象

Spring Security getAuthentication() returns null

我保护的是**/user/****下的资源
我保护的是/user/**下的资源

而我获取authentication的接口是不在保护之中的(/test/info)而我获取username的接口是不在保护之中的

现在回想,百度到的结果其实出现这个问题的原因也是如此,SpringSecurity版本的升级,保护资源的配置也更改了,导致旧版本的路径过滤不生效,也等于访问了没有受保护的资源,跟我出现null的原因就一样了。

记录一下,以免以后再犯

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值