【发布时间】:2014-02-19 06:54:16
【问题描述】:
我刚刚按照http://www.mkyong.com/servlet/a-simple-httpsessionlistener-example-active-sessions-counter/ 在我的spring mvc webapp 中实现了一个SessionCounterListener。
我看到了一些我没想到的行为,并且有两个问题。
问题 1。 当我在服务器重启后第一次点击我的 login.jsp 时,会话计数器甚至在我登录之前就加了 1(不是预期的)。
例如当我进入登录页面时... sessionCreated - 将一个会话添加到计数器:1
然后,当我点击注销按钮时,会话计数减一(这很好),但在会话计数增加 1 之后立即(不是预期的)。
例如,当我按下注销按钮时... sessionDestroyed - 从 counter:0 中扣除一个会话 sessionCreated - 将一个会话添加到计数器:1
好像每次我进入登录页面时计数都会增加1。我希望只有在成功登录后才会增加计数。
谁能帮我理解这里发生了什么?
问题 2。 当我在我的应用程序中以其他用户身份登录而第一个用户仍然登录时,我没有得到新的会话计数器。即,我认为它不会为新用户创建新会话。
再次请大家帮忙理解一下。
这是我的 spring 安全设置....
<http pattern="/login.htm" security="none"/>
<http use-expressions="true" auto-config="false" entry-point-ref="loginUrlAuthenticationEntryPoint">
<!-- custom filters -->
<custom-filter position="FORM_LOGIN_FILTER" ref="twoFactorAuthenticationFilter" />
<custom-filter ref="securityLoggingFilter" after="SECURITY_CONTEXT_FILTER"/>
<!-- session management -->
<session-management
invalid-session-url="/sessionExpired.htm"
session-authentication-error-url="/alreadyLoggedIn.htm">
<concurrency-control
max-sessions="1"
expired-url="/sessionExpiredDuplicateLogin.htm"
error-if-maximum-exceeded="false" />
</session-management>
<!-- error handlers -->
<access-denied-handler error-page="/accessDenied.htm"/>
<!-- logout -->
<logout logout-success-url="/logout.htm" invalidate-session="true" delete-cookies="JSESSIONID" />
<!-- authorize pages -->
<intercept-url pattern="/home.htm" access="isAuthenticated()" />
<intercept-url pattern="/shortsAndOvers.htm" access="isAuthenticated()" />
<intercept-url pattern="/shortsAndOversDaily.htm" access="isAuthenticated()" />
<intercept-url pattern="/birtpage.htm" access="isAuthenticated()" />
<intercept-url pattern="/reports/show.htm" access="isAuthenticated()" />
</http>
<beans:bean id="loginUrlAuthenticationEntryPoint" class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
<beans:property name="loginFormUrl" value="/login.htm" />
</beans:bean>
<beans:bean id="successHandler" class="com.me.reporting.security.CustomSavedRequestAwareAuthenticationSuccessHandler">
<beans:property name="defaultTargetUrl" value="/home.htm" />
</beans:bean>
<beans:bean id="failureHandler" class="com.me.reporting.security.CustomSimpleUrlAuthenticationFailureHandler">
<beans:property name="defaultFailureUrl" value="/loginfailed.htm" />
</beans:bean>
【问题讨论】:
标签: spring-mvc spring-security