Spring Security 自定义字段
1)如何在登录表单中添加自定义字段并在登录后使用该值导航到不同的页面。我需要一个自定义身份验证提供程序来进行身份验证。我们可以使用 spring mvc 来绑定这一切吗?
2)我们如何在auth提供者中获取HttpSession?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
1)我想,您可以通过实现自己的 AuthenticationSuccessHandler 并将其传递给 来选择默认行为;
2) 这实际上不符合 Spring Security 中关注点分离范例的脉络,其中身份验证提供程序填充
Authentication
对象,而另一个过滤器则在/从HTTP 会话。尽管如此,您通常可以通过将过滤器org.springframework.web.context.request.RequestContextListener
添加到您的请求处理链内的任何位置来访问当前的 HTTP 请求,从而访问会话。web.xml
。然后使用((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession()
从身份验证提供程序访问会话。1) I guess, you can choose the default behavior by implementing your own
AuthenticationSuccessHandler
and passing it to<form-login authentication-success-handler-ref="..."/>
2) This is actually not in the vein of the separation of concerns paradigm in Spring Security where the authentication provider populates the
Authentication
object and another filter persists/populate the authentication in/from the HTTP session. Nevertheless, you can in general have access to the current HTTP request and, therefore a session, from anywhere inside the request processing chain by adding the filterorg.springframework.web.context.request.RequestContextListener
to yourweb.xml
. Use then((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest().getSession()
to reach the session from your authentication provider.