如何解决如何在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 举报,一经查实,本站将立刻删除。