我正在尝试设置一个简单的 spring mvc/spring security webapp,但我似乎找不到完成此操作的方法:
- 我想使用普通的 @Secured 注释,如果用户未登录,我希望他们被重定向到登录页面,然后返回到原来的位置(这是我认为的正常行为)已经成功完成)
- 我希望登录表单成为我自己的 Controller /模板对(也很常见且已完成)。
- 我希望将上面的登录表单提交到我自己的 Controller ,该 Controller 将根据我的后端 Restful 服务对用户凭据进行身份验证。然后它接收从服务返回的安全 token 。此时,我想手动将 session 标记为已通过身份验证,并将 token 附加到其上。
我该如何实现最后阶段?
最佳答案
我不确定我是否完全理解你的问题,但如果我理解正确,你也许可以扩展 AbstractPreAuthenticatedProcessingFilter 并覆盖 getPreAuthenticatedPrincipal 和 getPreAuthenticatedCredentials 并调用你的 Restful 服务/ Controller 等。覆盖 AuthenticationUserDetailsService 并提供一个简单的服务,并添加您的安全上下文,如下所示:
<beans:bean id="preauthAuthProvider"
class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider">
<beans:property name="preAuthenticatedUserDetailsService">
<beans:bean class="com.YourCompany.YourPreAuthenticatedGrantedAuthoritiesUserDetailsService"></beans:bean>
</beans:property>
<beans:property name="order" value="1"/>
</beans:bean>
<authentication-manager alias="authenticationManager" >
<authentication-provider ref="preauthAuthProvider" ></authentication-provider>
</authentication-manager>
关于java - 简单的 Spring MVC+安全设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10273932/