session并发登录处理
This commit is contained in:
@@ -14,4 +14,7 @@
|
||||
- 第三方登陆时,当用户不存在的时候,如果想要系统自动注册一个用户,不进行跳转的话。声明一个类似于demo项目中DemoConnectionSignUp
|
||||
样的组件进行自己用户体系的注册。这里的注册指的是创建本系统自己的用户体系,第三方的用户体系springSocial会自动帮助我们创建。授权后
|
||||
直接跳转到域名首页
|
||||
### session管理
|
||||
- session过期的处理 @GetMapping("/session/invalid")
|
||||
- 用户并发登录的处理MsExpiredSessionStrategy
|
||||
|
||||
+8
@@ -1,5 +1,6 @@
|
||||
package com.micro.fast.security.browser.config;
|
||||
|
||||
import com.micro.fast.security.browser.session.MsExpiredSessionStrategy;
|
||||
import com.micro.fast.security.core.authentication.mobile.SmsCodeAuthenticationSecurityConfig;
|
||||
import com.micro.fast.security.core.master.SecurityConstants;
|
||||
import com.micro.fast.security.core.master.SecurityProperties;
|
||||
@@ -122,6 +123,13 @@ public class BrowserSecurityConfig extends WebSecurityConfigurerAdapter {
|
||||
.sessionManagement()
|
||||
//定义session过期的时候处理的url
|
||||
.invalidSessionUrl("/session/invalid")
|
||||
//session存在的最大数量
|
||||
.maximumSessions(1)
|
||||
//设置session被替换掉时处理逻辑
|
||||
.expiredSessionStrategy(new MsExpiredSessionStrategy())
|
||||
//设置不允许第二个用户登录,不设置这句话的话,会替换掉上一个登录用户
|
||||
.maxSessionsPreventsLogin(true)
|
||||
.and()
|
||||
.and()
|
||||
.authorizeRequests()//下面是权限配置
|
||||
//当访问这个页面的时候不进行身份认证,对用户自定义的登录页也不进行权限认证
|
||||
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
package com.micro.fast.security.browser.session;
|
||||
|
||||
import org.springframework.security.web.session.SessionInformationExpiredEvent;
|
||||
import org.springframework.security.web.session.SessionInformationExpiredStrategy;
|
||||
|
||||
import javax.servlet.ServletException;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* 处理session顶替的策略
|
||||
* @author lsy
|
||||
*/
|
||||
public class MsExpiredSessionStrategy implements SessionInformationExpiredStrategy {
|
||||
@Override
|
||||
public void onExpiredSessionDetected(SessionInformationExpiredEvent sessionInformationExpiredEvent) throws IOException, ServletException {
|
||||
sessionInformationExpiredEvent.getResponse().setContentType("application/json;charset=UTF-8");
|
||||
sessionInformationExpiredEvent.getResponse().getWriter().write("并发登录");
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -24,5 +24,5 @@ ms:
|
||||
server:
|
||||
session:
|
||||
# 超时时间,单位是秒,但是不能小于一分钟
|
||||
timeout: 120
|
||||
timeout: 600
|
||||
|
||||
|
||||
Reference in New Issue
Block a user