我们有自己的中央会话管理。通常,用户可以使用用户名和密码对其进行身份验证,因此他获得了session_id。所有其他操作都使用该session_id完成。假设会话管理由XML RPC访问。
我有两个案例要实施:
关于系统的更多通知:
- session_id存储在cookie中(成功登录后,我必须在响应中添加cookie)
- 每个页面请求都必须检查会话管理系统中的session_id有效性
我对Spring很陌生,所以我很难理解在哪里以及如何实现我的自定义逻辑。
我的问题是:
我必须实现系统的哪些部分才能拥有自己的登录信息 逻辑(也可以访问响应对象 - 设置cookie)? 我试着扩展UsernamePasswordAuthenticationFilter并实现我自己的东西 AuthenticationManager,但我不确定我是否正确 方式。
是否有点/我如何实现“每个请求会话” 检查“以Spring安全方式?
答案 0 :(得分:0)
在配置到<form-login>
元素的AuthenticationSuccessHandler中执行此操作:
<form-login authentication-success-handler-ref="authenticationSuccessHandler"/>
创建一个新的过滤器,您可以在其中检查session_id cookie。如果cookie不存在或者无效,则重定向到中央Web应用程序以供用户登录。如果cookie存在且有效且用户尚未经过身份验证,则创建新的Authentication
并添加它到SecurityContextHolder
。
请查看RememberMeAuthenticationFilter.doFilter(),了解您希望在过滤器中执行的操作的示例。
使用<custom-filter>
元素将此过滤器添加到过滤器链。