同一用户PC和mobile中允许同时登录,但PC和mobile分别只能登录一次可以参考http://docs.wex5.com/bex5-server-question-list-10045/
如果要第二次登录时提供是否强制注销的选择,可以在前端js文件中调用登录的时候用confirm调试选择,具体实现如下:
修改上面链接中的loginAction的执行前事件如下:
public static void systemProcessBeforeLoginAction() throws Exception {
String user = ((String) ContextHelper.getActionContext().getParameter("name"));
Map<Object, Object> options = (Map<Object, Object>) ContextHelper.getActionContext().getParameter("options");
String deviceType = (String) options.get("DeviceType");
String userDeviceType = user + ":" + deviceType;
String onLine = (String) options.get("onLine"); // 获取第二次登录的标记
// 获取登录输入的name和设备类型,判断map中是否存在
if (OnLineMap.OnLineMaps.containsKey(userDeviceType)) {
// 判断是否是第二次登录,如果是设置session失效
if (Utils.isNotEmptyString(onLine) && onLine.equals("已登录")) {
HttpSession session = (HttpSession) OnLineMap.OnLineMaps.get(userDeviceType);
session.invalidate();
} else
throw new Exception("此用户已经在当前终端类型登录,请切换其他用户登录");
}
}
前端js中的修改
pc端的/UI2/portal/base/login/login.js中的
}else{
throw justep.Error.create(result.message);
}
修改为:
} else {
var message = result.message;
//判断如果已经登录,弹出cofrim提示框选择是否注销已登录用户重新登录
if (message == '此用户已经在当前终端类型登录,请切换其他用户登录') {
var r = confirm("此用户已经在当前终端类型登录请确认是否退出已登录用户重新登录,若取消请换其他用户登录");
if (r === true) {
//如果选择是给登录的参数添加第二次登录的标记,并且调用登录
urlParams["options[onLine]"] = "已登录";
var result2 = this.doLogin(urlParams);
if (result2.flag === true) {
var auto2 = autoLogin.val();
if (remember.val()) {
this.store('rememberme', "remember");
this.store('username', urlParams.username);
this.store('password', urlParams.password);
this.store('autoLogin', auto2);
}
// 对话框返回数据
this.comp("receiver").windowEnsure(result2.data);
return false;
} else {
throw justep.Error.create(result2.message);
}
} else {
return;
}
} else
throw justep.Error.create(result.message);
}
mobile端/UI2/portal/mobile/login/login.js中的
}else{
alert(result.message);
}
修改为:
}else{
var message = result.message;
//判断如果已经登录,弹出cofrim提示框选择是否注销已登录用户重新登录
if (message == '此用户已经在当前终端类型登录,请切换其他用户登录') {
var r = confirm("此用户已经在当前终端类型登录请确认是否退出已登录用户重新登录,若取消请换其他用户登录");
if (r === true) {
//如果选择是给登录的参数添加第二次登录的标记,并且调用登录
urlParams["options[onLine]"] = "已登录";
var result2 = this.doLogin(urlParams);
if (result2.flag === true) {
var auto2 = autoLogin.val();
if (remember.val()) {
this.store('rememberme', "remember");
this.store('username', urlParams.username);
this.store('password', urlParams.password);
this.store('autoLogin', auto2);
}
// 对话框返回数据
this.comp("receiver").windowEnsure(result2.data);
return false;
} else {
alert(result2.message);
}
} else {
return;
}
} else
alert(result.message);
}
评一波