1.在/UI2/portal/base/login/login.js的Model.prototype.doLogin = function(params){中可以通过 params[“options[aaa]”] = “bbb”;添加自己的验证信息传到后端
如下:
Model.prototype.doLogin = function(params){ params['url'] = require.toUrl(loginAction); params["options[aaa]"] = "bbb"; var result = biz.Request.login(params); if(result.status === 0 || result.status === 500){ return {flag: false, message: "网络有问题, 请与管理员联系!"}; }else{ return JSON.parse(result.responseText); } };
2.在/BIZ/SA/OPM/system/system.process.m的动作设置中找到loginAction,在执行前事件中获取的loginAcion中Map类型的options参数,然后自己从Map中获取,进行判断,如果校验不通过可以直接抛出异常,获取Map参数如下获取:
public static void systemProcessBeforeLoginAction() { ContextHelper.getActionContext().getParameter("options"); }
为什么要在loginAction在执行前事件中处理吗?
因为loginAction的执行后事件中平台的登录已经完成会在在线列表中记录在线用户,这个时候如果自己的验证信息不通过抛异常是不会信息在线用户数的,这样就导致看到的现象是登录信息验证不通过没有登录成功,但是在线用户列表里面已经有了登录用户的在线记录了
评一波