简单的问题,我只需要一个正确方向的指针:
我有一个简单的 Spring MVC/Spring Security webapp。最初,我设置了 Spring Security,以便默认登录页面正确显示和验证(我使用 DaoAuthenticationProvider
实现了 UserDetailsService
来执行此操作)。
下一步:用我的登录页面替换默认的 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”
除此之外,以及上面其他相当明显的选项,您应该已经实现了一个 UserDetailsService
- 也就是说,创建一个类并实现接口(interface) UserDetailsService
,并返回给定用户名的 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/