【问题标题】:Pulling the userDetails in custom LogoutHandler Spring MVC在自定义 LogoutHandler Spring MVC 中拉取 userDetails
【发布时间】:2013-02-18 11:20:58
【问题描述】:

在 MyLogoutHandler 类中,我确实重写了 determineTargetUrl() 方法,这里我调用 MyUserDetials userDetails = (MyUserDetials)userContextManager.getUserDetails(),但 userDetails 为空。

这里是配置:

<security:logout  
invalidate-session="true"
success-handler-ref="MyLogoutHandler"
logout-url="/auth/logout"/>

我注意到由于invalidate-session="true",它是空的?但是我喜欢保持这个属性为“true”,我可以用其他方法来配置吗?

我的目标是:我需要从 userDetails 中提取一些信息,以便在用户单击注销后进行网络服务调用。

谢谢。

【问题讨论】:

    标签: spring session spring-mvc spring-security logout


    【解决方案1】:

    你需要创建自己的LogoutHandler,实现

     void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication);
    

    将它的实现添加到security:logout 标签。从authentication参数获取用户详细信息后。

    【讨论】:

    • 我确实尝试过这种方法,根据我的spring配置,这不起作用,虽然它有助于我思考。谢谢。
    【解决方案2】:

    我解决了这个问题。我创建了 My Own Handler 并覆盖了:

    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {...}
    

    *SimpleUrlLogoutSuccessHandler* 的方法。现在我可以根据我的 spring 配置获取*authentication* 对象了。

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 2012-01-29
      • 2019-08-06
      • 2019-08-22
      • 2014-12-14
      • 2013-10-11
      • 2019-11-06
      • 2018-10-09
      相关资源
      最近更新 更多