1 概述
需求:
由于SmartBI不限制用户登陆移动设备的数量,客户需要限制一个用户最多只能够登陆不超过三台手机或者Pad设备
注意:本示例来源于实际项目,原始版本是V6,可作为参考性质,也许是不能运行的。
实现方案:
产品已经有 “移动设备管理“功能,只是产品的移动设备管理要么是手动要么是自动审核,这个项目是用户第一次接入的设备自动审核,第二次接入的设备需要手动审核
需要重写IPadPortalModule.java
在spring上重新注册相同key的module到RMIModule,module的注册请见自定义Module.
2 编写修改代码
2.1 重写IPadPortalModule.java
public String canAccessIPadModule(String ipadId) { RegisterInfo info = IPadDAOFactory.getRegisterInfoDAO().load(ipadId); if (info == null) { // 新设备 // 获取所有注册信息 List<RegisterInfo> rInfos = IPadDAOFactory.getRegisterInfoDAO() .getAllRegisters(); if (rInfos != null) { int flag = 0; for (int i = 0; i < rInfos.size(); i++) { String rUser = rInfos.get(i).getRequestUser(); IUser user = IPadPortalModule.getInstance() .getStateModule().getCurrentUser(); String cUser = user.getName(); if (!StringUtil.isNullOrEmpty(user.getAlias())) { cUser += "(" + user.getAlias() + ")"; } if (rUser.equals(cUser)) { flag++; } } LOG.info("flag:"+flag); if (flag > 0 && flag < 3) { // 该用户非第一次接入设备需要审核 return "requireRegister"; } if (flag >= 3) { return StringUtil.getLanguageValue("Ipad_Register_Error", CommonConfiguration.getInstance().getLocale()); } if (flag == 0) { // 自动审核 IPadDAOFactory.getRegisterInfoDAO().register(ipadId); return super.canAccessIPadModule(ipadId); } } else { // 自动审核 IPadDAOFactory.getRegisterInfoDAO().register(ipadId); return super.canAccessIPadModule(ipadId); } } else { // 已经存在记录 IUser user = IPadPortalModule.getInstance().getStateModule() .getCurrentUser(); String name = user.getName(); if (!StringUtil.isNullOrEmpty(user.getAlias())) { name += "(" + user.getAlias() + ")"; } String rName = info.getRequestUser(); if (name.equals(rName)) { switch (info.getStatus()) { case ACCEPTED: case AUTO_ACCEPTED: return "true"; case REJECTED: return "reject"; case REQUEST: return "request"; } return "faild"; } else { return "faild"; } } return "faild"; }