2013-04-20 1 views
0

Вместо ограничения одного сеанса на пользователя он ограничивает один сеанс дляПараллельный сеанс безопасности безопасности не работает по желанию

всего приложения.

Так что если один пользователь не может войти в систему, то никто не может войти в систему.

Вот моя конфигурация

<session-management invalid-session-url="/login"> 
     <concurrency-control error-if-maximum-exceeded="true" max-sessions="1" /> 
    </session-management> 

И я даже добавил слушателя в web.xml.

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
     http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 
    <!-- HTTP security configurations --> 
    <http auto-config="true" use-expressions="true"> 
     <form-login login-processing-url="/resources/j_spring_security_check" 
      login-page="/login" default-target-url="/index" 
      authentication-success-handler-ref="myAuthenticationSuccessHandler" 
      authentication-failure-url="/login?login_error=t" /> 
     <logout invalidate-session="true" 
      logout-url="/resources/j_spring_security_logout" success-handler-ref="myLogoutSuccessHandler"/> 
     <!-- Configure these elements to secure URIs in your application --> 
     <intercept-url pattern="/choices/**" access="hasRole('ROLE_ADMIN')" /> 
     <intercept-url pattern="/member/**" access="isAuthenticated()" /> 
     <intercept-url pattern="/resources/**" access="permitAll" /> 
     <intercept-url pattern="/**" access="permitAll" /> 

    <session-management invalid-session-url="/login"> 
      <concurrency-control error-if-maximum-exceeded="true" 
       max-sessions="1" /> 
     </session-management> 
    </http> 

    <!-- Configure Authentication mechanism --> 
    <authentication-manager alias="authenticationManager"> 
     <authentication-provider ref="customDaoAuthenticationProvider"> 
     </authentication-provider> 
    </authentication-manager> 

    <beans:bean id="myAuthenticationSuccessHandler" class="com.test.connect.web.login.MyAuthenticationSuccessHandler"/> 
    <beans:bean id="myLogoutSuccessHandler" class="com.test.connect.web.login.MyLogoutSuccessHandler"/> 

</beans:beans> 
+0

Можете ли вы добавить журналы? – Michael

+0

Как вы это проверяете? Надеюсь, не из того же браузера? –

+0

@AleksandrM Ya, конечно, из разных браузеров – kiranreddykasa

ответ

1

На основе конфигурации вы предусмотрели, которая включает в себя пользовательские AuthenticationProvider и проблемы вы испытываете, я бы предположил, что вы возвращаете реализацию пользовательских UserDetails, что не правильно реализовать на равных и методы Hashcode.

Убедитесь, что вы правильно ввели equals и hashCode в любой пользовательской реализации UserDetails, поскольку эти методы используются для поиска, если пользователь содержит активные сеансы.

+0

Привет Я не использую какую-либо пользовательскую реализацию Userdetails. Я возвращаю следующий файл org.springframework.security.core.userdetails .UserДетали в методе retriveUser. – kiranreddykasa

+0

org.springframework.security.core.userdetails.User – kiranreddykasa

+0

Вы уверены, что ваш customDaoAuthenticationProvider возвращает уникальных пользователей? Если он случайно возвращает объект User с тем же именем пользователя, это вызовет аналогичную проблему. Если это не помогает, попробуйте включить ведение журнала отладки и привязать журналы для первого и второго логинов. –

Смежные вопросы