我正在开发一个应用程序,需要使用相同的用户名和密码来防止多次登录.
如果它发生在同一台机器上,那么显然我们需要对用户会话做一些事情,但是如果它们使用相同的用户名和密码登录到不同的机器上,它也应该防止.
我们必须牢记以下事项:
我将不胜感激任何帮助.
我试图限制用户多次签名(强制前一个会话到期).
我检查了这个专题的文件在这里.我将其设置为非常类似于文档,但用户一次不限于一个会话.我可以使用同一个用户多次登录(在不同的浏览器中)并且有多个并发会话.
以下是我认为是我的安全设置的相关内容.我正在使用自定义UserDetailsService,UserDetails和AuthenticationFilter实现.
<http entry-point-ref="authenticationEntryPoint">
<!-- Make sure everyone can access the login page -->
<intercept-url pattern="/login.do*" filters="none" />
[...]
<custom-filter position="CONCURRENT_SESSION_FILTER" ref="concurrencyFilter" />
<custom-filter position="FORM_LOGIN_FILTER" ref="authenticationFilter" />
<logout logout-url="/logout" logout-success-url="/login.do" />
</http>
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="userDetailsService">
<password-encoder hash="sha" />
</authentication-provider>
</authentication-manager>
<beans:bean id="userDetailsService" class="[...]">
<beans:property name="userManager" ref="userManager" />
</beans:bean>
<beans:bean id="authenticationFilter" class="[...]">
<beans:property name="authenticationManager" ref="authenticationManager" />
<beans:property name="eventPublisher">
<beans:bean
class="org.springframework.security.authentication.DefaultAuthenticationEventPublisher" />
</beans:property>
<beans:property name="filterProcessesUrl" value="/security_check" />
<beans:property name="authenticationFailureHandler">
<beans:bean
class="org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler">
<beans:property name="defaultFailureUrl" value="/login.do?login_error=true" />
</beans:bean>
</beans:property>
<beans:property …Run Code Online (Sandbox Code Playgroud)