回答
您可以添加弹簧安全滤波器链中的新滤波器。该新文件将应用于/logout
网址。通过此过滤器时,您可以将当前页面保存在字段变量中。当通过过滤器返回时。您可以将请求重定向到保存的URL。我认为这可以提供帮助。您可以通过使用获取当前页面的URL。 Referer
标题在Request
对象中。
只是一个想法:
我们如何保持一堆访问过的页面。可能最多3个条目。并从注销重定向用户。
配置过滤器或扩展春季安全过滤器,以保持会话的堆栈约最后两个访问的网址
在注销配置servlet作为
logout-success-url
。现在得到会话栈的URL和现在无效会话并重定向用户到该页面
您也可以利用referrer header作为维杰提到
不确定这个问题是指哪个Spring版本 - 但自Spring 3.0以来,标准org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler
上有一个useReferer
属性。
因此,所有你需要做的就是配置它这样和注销将重定向到任何地方的用户来自何处:
<bean id="logoutSuccessHandler" class="org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler">
<property name="useReferer" value="true"/>
</bean>
<security:http>
<security:logout logout-url="/logout" success-handler-ref="logoutSuccessHandler" />
</security:http>
我用这个,它工作正常。但是,当我从受保护的页面注销它去登录表单...在这种情况下有什么办法去不同的URL? (即主页) – Mat 2012-07-12 12:53:58
我不认为这是可能的标准SimpleUrlLogoutSuccessHandler。您可以扩展它并覆盖'determineTargetUrl(HttpServletRequest请求,HttpServletResponse响应)'方法来实现自定义行为。但是你需要知道,如果网址(由'super.determineTargetUrl(请求,响应)来确定;')这是被重定向到被保护。我没有找到一个方法来做到这一点不是检查targetUrl这个字符串其他那里。 – meyertee 2012-07-14 09:04:37
你需要的是一个简单的LogoutSuccessHandler
@Component
public class CustomLogoutSuccessHandler extends
SimpleUrlLogoutSuccessHandler implements LogoutSuccessHandler {
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse
response, Authentication authentication)
throws IOException, ServletException {
if (authentication != null) {
System.out.println(authentication.getName());
}
response.setStatus(HttpStatus.OK.value());
response.sendRedirect(request.getHeader("referer"));
}
后来在您的配置方法中调用它,例如
.logout().logoutSuccessHandler(customLogoutSuccessHandler)
这会将您重定向到引用URL。
- 1. 重定向注销春季安全
- 2. 春季安全:注销时总是重定向到invalid-session-url
- 3. 春季安全注销
- 4. 春季安全:重定向URL擅自
- 5. 春季安全注销异常
- 6. 春季安全注销不起作用
- 7. 春季安全3.2:无法注销
- 8. 登录注销春季安全用例
- 9. 春季安全登录注销的URI
- 10. 春季安全注销导致NullPointerException
- 11. 春季安全登录/注销问题
- 12. 春季安全注销发出
- 13. 春季安全:删除cookie中注销
- 14. 春季安全注销确认
- 15. 春季安全登录/注销登录
- 16. 春季安全登录/注销问题
- 17. 春季安全 - 显示注销消息
- 18. 春季安全重定向如果
- 19. 春季安全注销重定向到注销成功,然后立即成为无效会话页面
- 20. 春季安全登录/注销url相关问题
- 21. 春季安全重定向url和单页散列片段
- 22. 春季安全元注释
- 23. 春季开机和春季安全总是重定向到登录
- 24. 春季安全登录/注销 - 运行自定义代码
- 25. 安全注释在春季安全
- 26. 春季安全不会重定向到主页
- 27. 春季安全预认证重定向到错误页面
- 28. 春季安全http-form重定向到404页
- 29. 春季开机安全始终重定向到home.jsp
- 30. Grails的春季安全重定向到错误的端口
你肯定也想这样?用户访问某个安全页面时,是否希望在注销后允许他在该安全页面上访问? – 2011-05-25 06:15:41
@Vijay可能是因为来宾 – 2011-05-25 06:17:34
主要是我想他们被送回登录屏幕。登录页面将它们发送到最初请求的页面,一旦它们已经成功登录,我希望这是他们注销的地方。 – 2011-05-27 04:04:33