新增 shiro.isAllowMultiDeviceLogin

参数,是否允许多账号多设备登录,如果设置为false,其它地点登录的相同账号全部登录设备将被踢下线
This commit is contained in:
thinkgem
2018-12-04 21:30:48 +08:00
parent a36244316c
commit 2d02047e81
3 changed files with 44 additions and 41 deletions

View File

@@ -148,15 +148,17 @@ public class OnlineController extends BaseController{
public String tickOut(String sessionId) {
Session session = sessionDAO.readSession(sessionId);
if (session != null){
@SuppressWarnings("unchecked")
Map<String, String> onlineTickOutMap = (Map<String, String>)CacheUtils.get("onlineTickOutMap");
Map<String, String> onlineTickOutMap = CacheUtils.get("onlineTickOutMap");
if (onlineTickOutMap == null){
onlineTickOutMap = MapUtils.newConcurrentMap();
}
PrincipalCollection pc = (PrincipalCollection)session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
LoginInfo principal = (pc != null ? (LoginInfo)pc.getPrimaryPrincipal() : null);
if (principal != null){
onlineTickOutMap.put(principal.getId()+"_"+principal.getParam("deviceType", "PC"), StringUtils.EMPTY);
Object pc = session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
if (pc != null && pc instanceof PrincipalCollection){
LoginInfo loginInfo = (LoginInfo)((PrincipalCollection)pc).getPrimaryPrincipal();
if (loginInfo != null){
String key = loginInfo.getId()+"_"+loginInfo.getParam("deviceType", "PC");
onlineTickOutMap.put(key, StringUtils.EMPTY);
}
}
CacheUtils.put("onlineTickOutMap", onlineTickOutMap);
sessionDAO.delete(session);

View File

@@ -40,9 +40,9 @@ jdbc:
# 一个连接在池中最大空闲的时间单位毫秒30分钟4.1.2+
maxEvictableIdleTimeMillis: 1800000
# 是否自动回收泄露的连接和超时时间,单位秒(10分钟4.0.6+
# 是否自动回收泄露的连接和超时时间,单位秒(35分钟4.0.6+
removeAbandoned: true
removeAbandonedTimeout: 600
removeAbandonedTimeout: 2100
# JTA 分布式事务v4.0.4+
jta:
@@ -312,6 +312,9 @@ shiro:
# 是否允许账号多地登录如果设置为false同一个设备类型的其它地点登录的相同账号被踢下线
isAllowMultiAddrLogin: true
# 是否允许多账号多设备登录如果设置为false其它地点登录的相同账号全部登录设备将被踢下线
isAllowMultiDeviceLogin: true
# 是否允许刷新主框架页如果设置为false刷新主页将导致重新登录。如安全性比较高的如银行个人首页不允许刷新。
isAllowRefreshIndex: true
@@ -490,6 +493,19 @@ file:
# 是否用文件流方式下载(支持断点续传)
isFileStreamDown: true
# 视频转码
video:
# 视频格式转换 ffmpeg.exe 所放的路径
ffmpegFile: d:/tools/video/ffmpeg-4.9/bin/ffmpeg.exe
# ffmpegFile: d:/tools/video/libav-10.6-win64/bin/avconv.exe
# 视频格式转换 mencoder.exe 所放的路径
mencoderFile: d:/tools/video/mencoder-4.9/mencoder.exe
# 将mp4视频的元数据信息转到视频第一帧
qtFaststartFile: d:/tools/video/qt-faststart/qt-faststart.exe
#======================================#
#========== Message settings ==========#
#======================================#
@@ -544,18 +560,3 @@ msg:
oauth:
redirectUri: http://demo.jeesite.com/js
#======================================#
#========== Video settings ============#
#======================================#
video:
# 视频格式转换 ffmpeg.exe 所放的路径
ffmpegFile: d:/tools/video/ffmpeg-4.9/bin/ffmpeg.exe
# ffmpegFile: d:/tools/video/libav-10.6-win64/bin/avconv.exe
# 视频格式转换 mencoder.exe 所放的路径
mencoderFile: d:/tools/video/mencoder-4.9/mencoder.exe
# 将mp4视频的元数据信息转到视频第一帧
qtFaststartFile: d:/tools/video/qt-faststart/qt-faststart.exe

View File

@@ -98,9 +98,9 @@ jdbc:
# # 一个连接在池中最大空闲的时间单位毫秒30分钟4.1.2+
# maxEvictableIdleTimeMillis: 1800000
#
# # 是否自动回收泄露的连接和超时时间,单位秒(10分钟4.0.6+
# # 是否自动回收泄露的连接和超时时间,单位秒(35分钟4.0.6+
# removeAbandoned: true
# removeAbandonedTimeout: 600
# removeAbandonedTimeout: 2100
# # 多数据源名称列表,启用方式:@MyBatisDao(dataSourceName="ds2")
# dataSourceNames: ds2
@@ -359,6 +359,9 @@ logging:
# # 是否允许账号多地登录如果设置为false同一个设备类型的其它地点登录的相同账号被踢下线
# isAllowMultiAddrLogin: true
#
# # 是否允许多账号多设备登录如果设置为false其它地点登录的相同账号全部登录设备将被踢下线
# isAllowMultiDeviceLogin: true
#
# # 是否允许刷新主框架页如果设置为false刷新主页将导致重新登录。如安全性比较高的如银行个人首页不允许刷新。
# isAllowRefreshIndex: true
#
@@ -502,6 +505,19 @@ logging:
# # 是否用文件流方式下载(支持断点续传)
# isFileStreamDown: true
#视频转码
#video:
#
# # 视频格式转换 ffmpeg.exe 所放的路径
# ffmpegFile: d:/tools/video/ffmpeg-4.9/bin/ffmpeg.exe
## ffmpegFile: d:/tools/video/libav-10.6-win64/bin/avconv.exe
#
# # 视频格式转换 mencoder.exe 所放的路径
# mencoderFile: d:/tools/video/mencoder-4.9/mencoder.exe
#
# # 将mp4视频的元数据信息转到视频第一帧
# qtFaststartFile: d:/tools/video/qt-faststart/qt-faststart.exe
#======================================#
#========== Message settings ==========#
#======================================#
@@ -535,22 +551,6 @@ logging:
# prefix: 【JeeSite】
# suffix: ~
#======================================#
#========== Video settings ============#
#======================================#
#video:
#
# # 视频格式转换 ffmpeg.exe 所放的路径
# ffmpegFile: d:/tools/video/ffmpeg-4.9/bin/ffmpeg.exe
## ffmpegFile: d:/tools/video/libav-10.6-win64/bin/avconv.exe
#
# # 视频格式转换 mencoder.exe 所放的路径
# mencoderFile: d:/tools/video/mencoder-4.9/mencoder.exe
#
# # 将mp4视频的元数据信息转到视频第一帧
# qtFaststartFile: d:/tools/video/qt-faststart/qt-faststart.exe
#======================================#
#========== Project settings ==========#
#======================================#