在我的Web应用程序中,登录页面为http://localhost:8080/vsingh/login
我可以在下面做
在tab1中,使用USER1登录。用户被重定向到主页。现在打开tab2并使用USER2登录。现在,用户被重定向到USER1的主页。
在这种情况下如何自动注销USER1?任何指针都表示赞赏。
PS:我确实会自动重定向到主页,因为用户已经登录并点击了登录页面,但是在这种情况下,该选项卡在用户尝试登录之前已经打开
@RequestMapping("/login")
public String login() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
if (!(auth instanceof AnonymousAuthenticationToken) && auth != null) {
return "redirect:userHome";
}
return "login";
}
Spring Security XML
<http auto-config='true' use-expressions="true">
<intercept-url pattern="/*" access="permitAll" />
<access-denied-handler error-page="/login"/>
<form-login login-page="/login"
authentication-failure-handler-ref="customAuthFailureHandler"
username-parameter="username" password-parameter="password"
authentication-success-forward-url="/userHomeX" />
<csrf />
<logout logout-success-url="/logout" />
</http>
<authentication-manager>
<authentication-provider>
<password-encoder ref="encoder" />
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query="SELECT USERNAME, RTRIM(PASSWORD) AS PASSWORD, CASE WHEN ENABLED=1 AND ADMIN_LOCK = 0 THEN 1 ELSE 0 END AS ENABLED FROM JWBDATABASE.JWBSCHEMA.USERS WHERE USERNAME=?"
authorities-by-username-query="SELECT USERNAME,USER_ROLE AS ROLE FROM JWBDATABASE.JWBSCHEMA.USERS WHERE USERNAME=?" />
</authentication-provider>
</authentication-manager>
<beans:bean id="encoder"
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder">
<beans:constructor-arg name="strength" value="11" />
</beans:bean>
<beans:bean id="customAuthFailureHandler"
class="com.vj.authenticationManager.CustomAuthFailureHandler">
</beans:bean>
为什么它不是重复的? 问题不是关于在不同选项卡中允许多次登录,而是以某种方式强制所有选项卡进行一次登录。如果有人使用其他用户名通过已经打开的登录页面登录,则旧的页面应被强制注销,或者使用某些消息在新登录时抛出错误