当前位置: 首页 > 面试题库 >

为什么我的自定义登录页面在Spring Security 4中不显示?

夹谷辰沛
2023-03-14
问题内容

我可以在Spring Security 3.2.4中使用自定义登录页面,但是在使用4.0.0迁移以下代码后,我看到的是通用登录表单,而不是我的自定义表单:

  <beans:bean id="authSuccessHandler" class="com.company.web.RoleBasedAuthenticationSuccessHandler" />

  <http disable-url-rewriting="false" use-expressions="true">
    <form-login login-page="/login"
        username-parameter="j_username"
        password-parameter="j_password"
        login-processing-url="/j_spring_security_check"
        authentication-failure-url="/login?login_error=true"
        authentication-success-handler-ref="authSuccessHandler"/>
    <!-- SOME INTERCEPT-URLs (redacted) -->
    <intercept-url pattern="/login" access="permitAll"/>
    <remember-me 
         remember-me-parameter="_spring_security_remember_me"
         remember-me-cookie="SPRING_SECURITY_REMEMBER_ME_COOKIE"/>
    <logout 
         logout-url="/j_spring_security_logout" 
         logout-success-url="/index" />
  </http>

我还尝试在各种Spring类上启用调试日志记录。我在自定义authSuccessHandler上进行了设置,但是看不到任何输出。在SO或Google上搜索也没有运气。

此配置有什么不兼容的地方吗?

更新:

我也这样使用Apache Tiles:

  <definition name="login" extends="scrollableLayout">
    <put-attribute name="header" value="/WEB-INF/jsp/heading_blue.jsp"/>
    <put-attribute name="body" value="/WEB-INF/jsp/login.jsp"/>
  </definition>

并使用以下命令:

  <mvc:view-controller path="/login" />

问题答案:

Spring Security
3.x用作spring_security_login默认的登录URL(source:官方文档)。可以将其设置为as的自定义值,<security:form-login login- page="/login">并将其映射到控制器以呈现自定义页面。

Spring Security
4.x已放弃spring_security_login并切换login为默认登录URL(source:官方Spring Security
4.x迁移指南
)。因此,URL login现在转到默认的Spring Security基础结构,该基础结构显示默认的自动生成的登录页面。

如果使用JSP作为视图呈现技术,则补救html" target="_blank">方法很简单。只需将登录页面重命名为login.jsp,将其放在页面层次结构的根文件夹中,Spring
Security就会自动将其选中。如果您不使用JSP,则必须使用其他login- page值(也许signin代替,login然后也更改控制器映射。

请注意,默认注销URL在4.x中也已更改。如果您为注销URL编写了任何自定义逻辑,请确保也进行检查。

请复查正式的迁移指南,因为4.x中的很多事情都已更改。



 类似资料:
  • 请参考一些wordpress post登录插件。我有3页的网站主页,关于正常工作和工作安全,我想显示工作安全页面,如果用户登录有电子邮件/只是虚拟id,我可以生成。找不到此登录模块的插件。带有自定义页面的自定义菜单 使用这个脚本,我可以创建菜单,但不能重定向单独的页面 函数my_wp_nav_menu_args($args=''){ 如果(用户是否已登录){ }否则{ } } 添加过滤器(“wp\

  • 我在我的JSF应用程序中使用容器管理的安全性,因此我有一个低于默认设置的登录页面。 现在在登录页面中,我想在登录按钮旁边添加一个按钮,以允许用户注册。 但我该如何将其转发到我的登记簿。我的注册按钮的xhtml页面?我用以下代码进行了尝试: 我也尝试将表单更改为h: form,以便我可以使用p:命令按钮,但正如我注意到的,我的登录页面不工作,当我单击提交按钮时什么也没有发生。 如何实现我想做的事?

  • 我有一个使用SpringMVC的Java网络应用程序。该 Web 应用程序在 jboss AS7.1 服务器上运行,该服务器使用带有表单认证的 JAAS 登录模块。当用户在表单上填写其用户名和密码时,登录工作顺利。 我现在想创建一个java控制器,它“将用户登录”,就好像用户填写了日志通知一样。 当上述方法完成时,应允许对任何安全页面的任何访问,因为用户被视为已登录。 可以通过访问Jboss的lo

  • 我想知道我应该如何创建我自己的自定义登录页面?我尝试了https://docs.spring.io/spring-security/site/docs/current/guides/html5/form-javaconfig.html和http://www.baeldung.com/spring-mvc-tutorial#configviews等指南,但没有任何效果,因为我似乎无法使类工作。我一直

  • 问题内容: 我有一个网站,有一个用户系统。我想将wordpress的用户系统集成到该网站的系统中,但是我仍然想使用该网站的注册/登录页面。我不希望任何人都能使用Wordpress的登录或注册表格进行登录或注册。相反,当他们尝试访问Wordpress中的登录/注册页面时,我希望这些页面将它们重定向到我自己的登录/注册页面。 有什么办法吗?我已经尝试过Google,但是我所能找到的只是在用户登录或注册

  • 而且,再一次,即使键入正确的凭据,正如我在“userDetailsService”方法中指定的那样,我也无法登录,但这次我终于可以在控制台上看到错误消息: 显然我走了,但没有离开这个地方,因为现在我不知道我的代码有什么问题...