为什么我的自定义登录页面没有显示Spring Security 4?
我可以使用Spring Security 3.2.4的自定义登录页面,但在使用4.0.0迁移下面的代码后,我看到一个通用的登录表单而不是我的自定义登录表单:
我还尝试在各种Spring类上启用调试日志记录。 我在我的自定义authSuccessHandler上设置它,但我没有看到它的任何输出。 在SO或Google上搜索也没有运气。
这个配置有什么不兼容的吗?
更新:
我也使用Apache Tiles:
并使用以下内容:
Spring Security 3.x使用spring_security_login
作为默认登录URL( source
: 官方文档 )。 这可以设置为自定义值
并映射到控制器以呈现自定义页面。
Spring Security 4.x放弃了spring_security_login
并切换到login
作为默认登录URL( source
: 官方Spring Security 4.x迁移指南 )。 因此,URL login
现在转到默认的Spring Security基础结构,该基础结构显示默认的自动生成的登录页面。
如果您使用JSP作为视图渲染技术,那么补救措施很简单。 只需将登录页面重命名为login.jsp
,将其放在页面层次结构的根文件夹中,Spring Security将自动将其提取。 如果您不使用JSP,则必须使用不同的login-page
值(可能是signin
而不是login
,然后更改控制器映射。
请注意,默认注销URL在4.x中也已更改。 如果您有为注销URL编写的任何自定义逻辑,请务必查看该逻辑。
请查看官方迁移指南,因为4.x中有很多变化。