平台默认的一个用户可以在多个地方登陆多次,并且提供了“在线用户”功能可以查看在线用户
如果要控制一个用户只运行登录一次,可以在登录前获取到输入的用户名与“在线用户”中的数据做对比
本例是判断如果已登录了可以注销之前的用户再登录,或者切换其他的用户登录
/UI2/portal/base/login/login.js的Model.prototype.login = function() {方法修改如下:

	Model.prototype.login = function() {
		var remember = this.comp('remember'), name = this.comp('name'), password = this.comp('password'), autoLogin = this.comp('autoLogin');

		var urlParams = {};
		urlParams.username = name.val() || $("[xid=name]").val();// 为了支持360急速浏览器,
		// 自动设置参数的情况
		if (!urlParams.username)
			throw justep.Error.create("请输入登录用户名!");
		urlParams.password = password.val() || $("[xid=password]").val();// 同上
		if (urlParams.password !== this.store("password")) {// 说明非是明文
			urlParams.password = md5.hex_md5_salt(urlParams.password);
		}

		urlParams.loginDate = justep.Date.toString(new Date(), 'yyyy-MM-dd');
		var ctx = this.getContext();
		var lang = ctx.getLanguage();
		if (lang)
			urlParams[LangParamName] = lang;
		var client = (this.comp("client") && $.isFunction(this.comp("client").val) && this.comp("client").val()) || ctx.getRequestParameter('client') || this.params.client;
		if (client)
			urlParams.client = client;
		var options = {
			dataType : "json",
			url : require.toUrl("$UI/system/service/common/queryOnlineUsers.j")
		};
		var resultOnline = biz.Request.sendHttpRequest(options);// 调用在线用户的请求返回在线用户列表
		if (biz.Request.isSuccess(resultOnline) && resultOnline.responseJSON.flag) {
			var data = biz.Request.getData(resultOnline);
			var rows = data.rows;
			for (var i = 0; i < data.rows.length; i++) {
				if (name.value == rows[i].name.value) {// 判断当前输入的name是否在在线用户列表中
					var bsessionid = rows[i].sessionid.value// 从在线用户列表获取已登录的bsessionid
					var r = confirm("该用户已登录请确认是否退出登录重新登录,若取消请换其他用户登录");
					if (r == true) {
						// 注销已登录的bsessiondid
						var url = require.toUrl("$UI/portal/base/logout/logout.j?bsessionid=" + bsessionid);
						$.ajax({
							type : "POST",
							processData : false,
							url : url,
							cache : false,
							async : false
						});
					} else {
						return;
					}
				}
			}
		}
		var result = this.doLogin(urlParams);
		if (result.flag === true) {
			var auto = autoLogin.val();
			if (remember.val()) {
				this.store('rememberme', "remember");
				this.store('username', urlParams.username);
				this.store('password', urlParams.password);
				this.store('autoLogin', auto);
			}

			// 对话框返回数据
			this.comp("receiver").windowEnsure(result.data);

			return false;
		} else {
			throw justep.Error.create(result.message);
		}
	};