如何在Spring 3中以编程方式执行注销

萨拉·库玛(Saurabh Kumar)

我有一个用于注销的spring配置,如下所示:

<logout logout-url="/abc/logout"
            logout-success-url="/abc/login"/>

现在,我要以编程方式注销。在Spring 3中如何实现此目的。我需要从具有以下def的控制器之一中注销。目前我正在做类似以下的事情...这是一个好主意..

 public void suppressUserProfile() {
   //...
   return "redirect:/abc/logout"; 
 }
德克·拉乔夫斯基

这取决于。如果您的应用可以将已注销的用户放置在“您已注销”页面上,则可以。但是您不能确定您的用户是否真正注销(例如,如果浏览器禁止重定向)。

您可以通过编程方式以这种方式注销:

public void logout(HttpServletRequest request, HttpServletResponse response) {
        Authentication auth = SecurityContextHolder.getContext().getAuthentication();
          if (auth != null){    
             new SecurityContextLogoutHandler().logout(request, response, auth);
          }
        SecurityContextHolder.getContext().setAuthentication(null);
    }

正如@LateralFractal指出的那样,如果您尚未更改的默认值SecurityContextLogoutHandler(请参见https://github.com/spring-projects/spring-security/blob/3.2.x/web/src/main/java/org/ springframework / security / web / authentication / logout / SecurityContextLogoutHandler.java#L96),您可以将其缩减为

public void logout(HttpServletRequest request) {
    new SecurityContextLogoutHandler().logout(request, null, null);
}

甚至(尽管有点难看)

public void logout() {
    HttpServletRequest request =
        ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes())
            .getRequest();
    new SecurityContextLogoutHandler().logout(request, null, null);

有关获取的一些背景信息,请参见https://stackoverflow.com/a/9767869/1686330HttpServletRequest

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Visual Studio中以编程方式执行“转到定义”?

来自分类Dev

如何在Java中以编程方式执行功能检测?

来自分类Dev

如何在Spring中以编程方式注册FactoryBean的实例

来自分类Dev

如何在Spring Boot中以编程方式创建bean?

来自分类Dev

如何在Spring Boot中以编程方式创建bean?

来自分类Dev

如何在Spring中以编程方式获取@Service实例

来自分类Dev

如何在Spring中以编程方式获取entitymanager?

来自分类Dev

如何在Spring Boot中以编程方式制作@Bean

来自分类Dev

在swift3中按下按钮时如何以编程方式执行segue或呈现视图

来自分类Dev

如何使用Spring Security以编程方式注销用户

来自分类Dev

如何以编程方式注销用户?[Django]

来自分类Dev

如何以编程方式在android中自动执行触摸

来自分类Dev

如何在MATLAB编辑器中以编程方式执行“折叠全折叠”?

来自分类Dev

如何在C#中以编程方式执行方法重载解析?

来自分类Dev

如何在Android最新版本中以编程方式执行UiAutomator测试用例

来自分类Dev

如何在Spring中以编程方式填充测试数据以进行集成测试?

来自分类Dev

如何在Spring Boot中以编程方式向/ info端点添加内容?

来自分类Dev

如何在Spring AMQP中以编程方式将异步使用方订阅到队列?

来自分类Dev

如何在Windows上以编程方式执行ping测试?

来自分类Dev

如何在Gnome 3中以编程方式将背景设置为纯色?

来自分类Dev

如何在Gnome 3中以编程方式将背景设置为纯色?

来自分类Dev

如何在Joomla 3.x中以编程方式创建自定义用户组?

来自分类Dev

如何在GNOME 3上以编程方式在特定工作区中启动应用程序

来自分类Dev

如何在 iOS Swift 3 中以编程方式设置元素视图中心?

来自分类Dev

如何以编程方式执行Android Numpad

来自分类Dev

如何在32位或64位配置中以编程方式运行ANY CPU .NET可执行文件?

来自分类Dev

如何在32位或64位配置中以编程方式运行ANY CPU .NET可执行文件?

来自分类Dev

在Spring Boot应用程序中以编程方式执行命令

来自分类Dev

如何在Android中以编程方式更新Dropbox中的记录?

Related 相关文章

  1. 1

    如何在Visual Studio中以编程方式执行“转到定义”?

  2. 2

    如何在Java中以编程方式执行功能检测?

  3. 3

    如何在Spring中以编程方式注册FactoryBean的实例

  4. 4

    如何在Spring Boot中以编程方式创建bean?

  5. 5

    如何在Spring Boot中以编程方式创建bean?

  6. 6

    如何在Spring中以编程方式获取@Service实例

  7. 7

    如何在Spring中以编程方式获取entitymanager?

  8. 8

    如何在Spring Boot中以编程方式制作@Bean

  9. 9

    在swift3中按下按钮时如何以编程方式执行segue或呈现视图

  10. 10

    如何使用Spring Security以编程方式注销用户

  11. 11

    如何以编程方式注销用户?[Django]

  12. 12

    如何以编程方式在android中自动执行触摸

  13. 13

    如何在MATLAB编辑器中以编程方式执行“折叠全折叠”?

  14. 14

    如何在C#中以编程方式执行方法重载解析?

  15. 15

    如何在Android最新版本中以编程方式执行UiAutomator测试用例

  16. 16

    如何在Spring中以编程方式填充测试数据以进行集成测试?

  17. 17

    如何在Spring Boot中以编程方式向/ info端点添加内容?

  18. 18

    如何在Spring AMQP中以编程方式将异步使用方订阅到队列?

  19. 19

    如何在Windows上以编程方式执行ping测试?

  20. 20

    如何在Gnome 3中以编程方式将背景设置为纯色?

  21. 21

    如何在Gnome 3中以编程方式将背景设置为纯色?

  22. 22

    如何在Joomla 3.x中以编程方式创建自定义用户组?

  23. 23

    如何在GNOME 3上以编程方式在特定工作区中启动应用程序

  24. 24

    如何在 iOS Swift 3 中以编程方式设置元素视图中心?

  25. 25

    如何以编程方式执行Android Numpad

  26. 26

    如何在32位或64位配置中以编程方式运行ANY CPU .NET可执行文件?

  27. 27

    如何在32位或64位配置中以编程方式运行ANY CPU .NET可执行文件?

  28. 28

    在Spring Boot应用程序中以编程方式执行命令

  29. 29

    如何在Android中以编程方式更新Dropbox中的记录?

热门标签

归档