昨晚按老师的要求准备一个简单的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/****下的资源
而我获取authentication的接口是不在保护之中的(/test/info)
现在回想,百度到的结果其实出现这个问题的原因也是如此,SpringSecurity版本的升级,保护资源的配置也更改了,导致旧版本的路径过滤不生效,也等于访问了没有受保护的资源,跟我出现null的原因就一样了。
记录一下,以免以后再犯