微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在Spring Security中编辑定时注销

如何解决如何在Spring Security中编辑定时注销

| 我试图弄清楚Spring \'s light security的定时注销功能位于何处,以及如何对其进行编辑以使用我的自定义注销方法。 我的理解是,确实存在一个可编辑的定时注销功能,到目前为止,我还找不到它,并且如果/如果这样做,则不确定如何使用我的注销顺序。 谢谢, 镜射命运 编辑清晰度: 它是一个Web / Servlet应用程序。我正在使用acegi安全性。 我现在正在使用Spring会话超时:
In web.xml:
<session-config>
    <session-timeout>5</session-timeout>
</session-config>
我需要一种方法来在发生超时时执行一些代码。但是,我不知道该怎么做。 如果我无法使用此方法执行代码,则我的理解是acegi可以使会话超时。但是,我也不知道该怎么做。我已经可以使用acegi在正常注销时执行代码
<security:logout invalidate-session=\"true\"
                success-handler-ref=\"logout\"
                logout-url=\"/logout.html\" />
</security:http>
因此,从本质上讲,我该如何使用acegi定时注销或发生会话超时来执行相同的操作?     

解决方法

        
HttpSessionListener
可能是您想要的。依赖于Spring的会话管理的问题在于,如果用户仅关闭浏览器而不注销,则将永远无法访问invalid-session-url(因为他们从未提出过另一个请求)。 像这样:
public class MySessionListner implements HttpSessionListener {
     public void sessionCreated(HttpSessionEvent se) {
          return; //or maybe do something,depends on what you need
     }

     public void sessionDestroyed(HttpSessionEvent se) {
          HttpSession session = se.getSession();
          //do whatever you need to do
     }
 }
然后在
web.xml
 <listener>
      <listener-class>com.foo.MySessionListener</listener-class>
 </listener>
这样,每次会话被销毁时,您的代码都会被调用,而不仅仅是用户在超时后尝试访问页面时。希望能有所帮助。     ,        会话超时时间由应用服务器管理(就像现在在“ 4”中一样)。可以在Spring中指定发生会话超时时发生的处理。例如,Spring 3.0可以指定会话无效后用户发出请求时将用户重定向到的页面。见下文。
<?xml version=\"1.0\" encoding=\"UTF-8\"?>

<b:beans xmlns:b=\"http://www.springframework.org/schema/beans\"
    xmlns:context=\"http://www.springframework.org/schema/context\"
    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:sec=\"http://www.springframework.org/schema/security\"
    xmlns:p=\"http://www.springframework.org/schema/p\"
    xsi:schemaLocation=\"http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.0.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd\">

        <sec:http auto-config=\"true\" access-denied-page=\"/login\">
            <sec:session-management invalid-session-url=\"/session-timeout\" />
            <sec:anonymous enabled=\"true\" />
            <sec:intercept-url ... />
            <sec:form-login ... />
            <sec:logout invalidate-session=\"true\" logout-success-url=\"/login\" />
        </sec:http>
    <!-- Other bean declarations --> 
</b:beans>
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。