java - 如何使用 Spring Security/Spring MVC 处理表单登录

标签 java spring-mvc spring-security

简单的问题,我只需要一个正确方向的指针:

我有一个简单的 Spring MVC/Spring Security webapp。最初,我设置了 Spring Security,以便默认登录页面正确显示和验证(我使用 DaoAuthenticationProvider 实现了 UserDetailsS​​ervice 来执行此操作)。

下一步:用我的登录页面替换默认的 spring 登录页面并发布凭据。

但是我如何处理提交的登录凭据? 我假设我将表单发布到 Controller ,验证凭据,但我不清楚正确的步骤是在那之后。例如:

  • 我是在调用 AuthenticationManager 的方法吗?
  • 我需要为此定义一个 bean 吗?
  • 是否有我需要实现的接口(interface)/服务,例如 AuthenticationEntryPoint 或其他东西?

我已经阅读了 3 遍文档,但没有完全遵循它们。我知道这很简单,所以我只需要听听流程应该如何进行。

最佳答案

我将为以后阅读本文的任何人添加一个澄清的答案:

当您在 spring security 中定义标签时,它将为您处理登录,我将详细介绍它的工作原理(希望在文档中如此详细):

<security:http auto-config="true">
    <security:form-login login-page="/login"
         login-processing-url="/postlogin"
         default-target-url="/myaccount"
         authentication-failure-url="/login?loginError=true" />
    <security:logout logout-url="/logout" />
</security:http>

login-page 是登录页面的 url。您应该有一个为该页面提供服务的 Controller (或静态 HTML 页面),这是您漂亮的登录表单。

login-processing-url 是表单登录组件处理的 URL。就好像表单登录组件为此页面实现了自己的 Controller 。您应该将您的表格张贴到此页面。您还需要知道将您的用户名/密码参数命名为“j_username”和“j_login”

除此之外,以及上面其他相当明显的选项,您应该已经实现了一个 UserDetailsS​​ervice - 也就是说,创建一个类并实现接口(interface) UserDetailsS​​ervice ,并返回给定用户名的 UserDetails 对象(用户名/密码)- 并为该 UserDetails 对象提供其余的安全配置:

<security:authentication-manager>
        <security:authentication-provider ref="daoAuthenticationProvider" />
</security:authentication-manager>

<bean id="daoAuthenticationProvider"
    class="org.springframework.security.authentication.dao.DaoAuthenticationProvider" >
    <property name="userDetailsService" ref="myAuthorizationService" />
</bean>

关于java - 如何使用 Spring Security/Spring MVC 处理表单登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4067736/

相关文章:

java - 获取列名以及 JSON 响应

spring - 未触发 AuthenticationSuccessEvent 或 InteractiveAuthenticationSuccessEvent 的 @EventListener

java - spring-Unnamed bean 定义既不指定 'class' 也不指定 'parent' 也不指定 'factory-bean' - 无法生成 bean 名称

java - 无状态应用程序 Spring Security

spring - Spring Security:REST API需要哪个过滤器

spring-security - 无法在 Windows 7 上的 GGTS 中使用 Spring Security Core 运行 Grails 项目

java - 如何在 Minecraft Forge 中注册 ItemBlock?

java - Android 应用无法找到外部库和 R 文件

java - 在 Java 中你应该总是使用枚举而不是常量吗?

java - Spring 依赖注入(inject)失败