成功登录后,spring将重定向到包含以下内容的/error
页面
{
"timestamp" : 1586002411175,
"status" : 999,
"error" : "None",
"message" : "No message available"
}
我使用的是spring-boot 2.2.4
我的配置:
x一个一个一个一个x一个一个二个一个x一个一个三个一个
备注:
原来错误是由于对我的静态资源之一的请求失败引起的。登录页面有<script src="/resources/my-js-file.js"></script>
在项目中丢失。我可以通过删除丢失的资源导入来修复此问题,但此问题可能在将来再次出现,因此无法修复。
如何防止这种情况发生?
我知道我可以用.defaultSuccessUrl("/log", true)
强制重定向到起始页,但我不想这样。我也希望重定向工作正常,尽管任何未找到的资源。
2条答案
按热度按时间7z5jn7bk1#
在浪费了很多时间之后,我明白了发生了什么。
所以spring找不到登录页面上使用的静态资源,但它没有返回此资源的状态
404
,而是尝试呈现错误页面并将请求转发到/error
。然后spring security拒绝此请求,因为用户未被授权。它将/error
请求保存到会话(用于成功登录后重定向)并将用户重定向到登录页面。当然,用户看不到这个重定向,因为状态
302
返回的请求是在后台完成的。但主要问题是/error
请求保存在会话中。然后用户成功登录,spring检查会话中的这个属性,并重定向到
/error
页面,默认情况下spring假设你在静态资源中有这个页面,如果你没有这个页面,你会看到这个奇怪的错误,状态码是999。溶液1
忽略安全配置中的
/error
页:所以这个请求在成功登录后不会被保存到会话中进行用户重定向。你会看到在登录页面上请求静态资源的状态码将从
302
变为404
。溶液2
忽略Spring罩自动配置的一部分:
这会产生相同的结果,但会禁用配置
ErrorMvcAutoConfiguration
中的一些bean,因此要小心。mznpcxlj2#
我遇到了同样的问题。我试着注解每个样式表链接,看看是哪个导致了错误。这是我的自定义css文件。问题是在我的css文件中,我有一个不存在的图像的url,还有另一个错误的@import语句。注解这些之后,一切都正常了。