平台登录插件开发和配置 博客分类: 平台 bbossbboss cms登录认证
程序员文章站
2024-03-13 13:06:03
...
新版本平台登录插件开发和配置
编写自己的插件,以便在登录后执行相应的操作:
写好自己的登录插件后,就可以修改文件resources/config-manager.xml的内容:
为:
即可。
备注
平台后台java程序中获取当前登录用户会话对象及用户属性方法:
获取用户登录信息
新版平台获取用户
同时系统可以扩展自己的用户loginmodule,在buildCallback方法中添加自己的用户属性。
2.老版本平台登录插件开发和配置
编写自己的插件,以便在登录后执行相应的操作:
写好自己的登录插件后,就可以修改文件resources/config-manager.xml的内容:
为:
即可。
备注
平台后台java程序中获取当前登录用户会话对象及用户属性方法:
获取用户登录信息
老版本平台
accesscontroler.getUserAttribute能够获取到的所有默认属性清单:
同时系统可以扩展自己的用户loginmodule,在buildCallback方法中添加自己的用户属性。
bboss为了方便系统在jsp页面上获取当前用户的会话属性,特意定义了一个accesscontrol标签,使用方法如下:
先在jsp头部导入标签:
接着就可以使用标签了:
检查资源操作权限的方法:
编写自己的插件,以便在登录后执行相应的操作:
public class TicketUserPasswordLoginModule extends UserPasswordLoginModule { private static Logger logger = Logger.getLogger(TicketUserPasswordLoginModule.class); @Override protected void buildCallback(CheckCallBackWrapper checkCallBack, User user, String userName, String password, String password_i, Organization org) throws ManagerException { super.buildCallback(checkCallBack, user, userName, password, password_i, org); try { //dosomething here 业务 //获取业务信息设置到会话对象中(登录时可以在这里将登录的酒店信息设置到会话属性中) String ticket = AppHelper.getTicket(userName, user.getUserWorknumber()); checkCallBack.setUserAttribute("ticket", ticket); //系统中获取ticket对象的方法: AccessControl accesscontroler = AccessControl.getAccessControl(); String ticket_ = accesscontroler.getUserAttribute("ticket"); } catch (Exception e) { logger.error(e); } } /** * 重置用户属性 * 业务中使用方法:AccessControl.getAccessControl().resetUserAttribute("hotelcode"); */ @Override public void resetUserAttribute(HttpServletRequest request, CheckCallBack checkCallBack, String userAttribute) { String userName = (String)checkCallBack.getUserAttribute("userAccount"); String userAttributevalue = "";//........;//获取最新的属性值 checkCallBack.setUserAttribute(userAttribute, userAttributevalue);//更新属性值 // TODO Auto-generated method stub //super.resetUserAttribute(request, checkCallBack, userAttribute); } /** * 更新用户会话属性,酒店切换时可以调用下面的方法更新登录的酒店信息: * 业务中调用方法:AccessControl.getAccessControl().resetUserAttributes(); */ @Override public void resetUserAttributes(HttpServletRequest request, CheckCallBack checkCallBack) { //根据需要更新属性值 try { String userName = (String)checkCallBack.getUserAttribute("userAccount"); String userWorknumber = (String)checkCallBack.getUserAttribute("userWorknumber"); String ticket = AppHelper.getTicket(userName, userWorknumber); checkCallBack.setUserAttribute("ticket", ticket); } catch (Exception e) { logger.error(e); } } }
写好自己的登录插件后,就可以修改文件resources/config-manager.xml的内容:
<loginModule name="console" controlFlag="required" debug="true" registTable="DB" class="org.frameworkset.platform.security.authenticate.UserPasswordLoginModule" />
为:
<loginModule name="console" controlFlag="required" debug="true" registTable="DB" class="com.bboss.application.util.TicketUserPasswordLoginModule" />
即可。
备注
平台后台java程序中获取当前登录用户会话对象及用户属性方法:
com.frameworkset.platform.security.AccessControl accesscontroler = com.frameworkset.platform.security.AccessControl.getAccessControl(); String userID = accesscontroler.getUserID();//获取用户id String userName = accesscontroler.getUserName();//获取用户中文名 accesscontroler.getUserAttribute(userAttribute) String worknumber = accesscontroler.getUserAttribute("userWorknumber");//获取用户工号 String fullorgjob = accesscontroler.getUserAttribute("fullorgjob");//获取用户带层级的机构岗位信息 String orgjob = accesscontroler.getUserAttribute("orgjob");//获取用户直属机构岗位信息
获取用户登录信息
新版平台获取用户
userAccount:用户账号 userID:用户唯一标识 depart:部门名称 departId:部门id job:用户岗位信息 title:中文名称(userAccount); userName:用户中文名称 userSex:用户性别 worknumber:工号 telphone:手机号码 userLeaderid:主管id userLeaderName:主管名称 userLeaderAccount:主管账号
同时系统可以扩展自己的用户loginmodule,在buildCallback方法中添加自己的用户属性。
2.老版本平台登录插件开发和配置
编写自己的插件,以便在登录后执行相应的操作:
package com.bboss.application.util; import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import com.frameworkset.platform.security.AccessControl; import com.frameworkset.platform.security.authentication.CheckCallBack; import com.frameworkset.platform.security.authentication.CheckCallBackWrapper; import com.frameworkset.platform.sysmgrcore.authenticate.UserPasswordLoginModule; import com.frameworkset.platform.sysmgrcore.entity.Organization; import com.frameworkset.platform.sysmgrcore.entity.User; import com.frameworkset.platform.sysmgrcore.exception.ManagerException; public class TicketUserPasswordLoginModule extends UserPasswordLoginModule { private static Logger logger = Logger.getLogger(TicketUserPasswordLoginModule.class); @Override protected void buildCallback(CheckCallBackWrapper checkCallBack, User user, String userName, String password, String password_i, Organization org) throws ManagerException { super.buildCallback(checkCallBack, user, userName, password, password_i, org); try { //dosomething here 业务 //获取业务信息设置到会话对象中(登录时可以在这里将登录的酒店信息设置到会话属性中) String ticket = AppHelper.getTicket(userName, user.getUserWorknumber()); checkCallBack.setUserAttribute("ticket", ticket); //系统中获取ticket对象的方法: AccessControl accesscontroler = AccessControl.getAccessControl(); String ticket_ = accesscontroler.getUserAttribute("ticket"); } catch (Exception e) { logger.error(e); } } /** * 重置用户属性 * 业务中使用方法:AccessControl.getAccessControl().resetUserAttribute("hotelcode"); */ @Override public void resetUserAttribute(HttpServletRequest request, CheckCallBack checkCallBack, String userAttribute) { String userName = (String)checkCallBack.getUserAttribute("userAccount"); String userAttributevalue = "";//........;//获取最新的属性值 checkCallBack.setUserAttribute(userAttribute, userAttributevalue);//更新属性值 // TODO Auto-generated method stub //super.resetUserAttribute(request, checkCallBack, userAttribute); } /** * 更新用户会话属性,酒店切换时可以调用下面的方法更新登录的酒店信息: * 业务中调用方法:AccessControl.getAccessControl().resetUserAttributes(); */ @Override public void resetUserAttributes(HttpServletRequest request, CheckCallBack checkCallBack) { //根据需要更新属性值 try { String userName = (String)checkCallBack.getUserAttribute("userAccount"); String userWorknumber = (String)checkCallBack.getUserAttribute("userWorknumber"); String ticket = AppHelper.getTicket(userName, userWorknumber); checkCallBack.setUserAttribute("ticket", ticket); } catch (Exception e) { logger.error(e); } } }
写好自己的登录插件后,就可以修改文件resources/config-manager.xml的内容:
<loginModule name="console" controlFlag="required" debug="true" registTable="DB" class="com.frameworkset.platform.sysmgrcore.authenticate.UserPasswordLoginModule" />
为:
<loginModule name="console" controlFlag="required" debug="true" registTable="DB" class="com.bboss.application.util.TicketUserPasswordLoginModule" />
即可。
备注
平台后台java程序中获取当前登录用户会话对象及用户属性方法:
com.frameworkset.platform.security.AccessControl accesscontroler = com.frameworkset.platform.security.AccessControl.getAccessControl(); String userID = accesscontroler.getUserID();//获取用户id String userName = accesscontroler.getUserName();//获取用户中文名 accesscontroler.getUserAttribute(userAttribute) String worknumber = accesscontroler.getUserAttribute("userWorknumber");//获取用户工号 String fullorgjob = accesscontroler.getUserAttribute("fullorgjob");//获取用户带层级的机构岗位信息 String orgjob = accesscontroler.getUserAttribute("orgjob");//获取用户直属机构岗位信息
获取用户登录信息
老版本平台
accesscontroler.getUserAttribute能够获取到的所有默认属性清单:
userName:用户真实名称 userID:用户id logincount:登录次数 userAccount:用户帐号 remark1:备注1 remark2:备注2 remark3:备注3 remark4:备注4 remark5:备注5 userAddress:地址 userEmail:邮箱 userFax:传真 userHometel:家庭电话 userIdcard:身份证 userMobiletel1:手机1 userMobiletel2:手机2 userOicq:oicq userPinyin:用户名拼音 userPostalcode:邮编 userSex:性别 userType:用户类型 userWorknumber:工号 userWorktel:工作电话 userBirthday:生日 userRegdate:注册日期 userSn:用户排序号 userIsvalid:用户是否有效 orgjob:用户直属机构岗位信息 fullorgjob:用户带层级的机构岗位信息 CHARGEORGID:com.frameworkset.platform.sysmgrcore.entity.Organization用户所属机构对象
同时系统可以扩展自己的用户loginmodule,在buildCallback方法中添加自己的用户属性。
bboss为了方便系统在jsp页面上获取当前用户的会话属性,特意定义了一个accesscontrol标签,使用方法如下:
先在jsp头部导入标签:
<%@ taglib uri="/WEB-INF/sany-taglib.tld" prefix="sany"%>
接着就可以使用标签了:
<sany:accesscontrol userattribute="userName"/> <sany:accesscontrol userattribute="userAccount"/> <sany:accesscontrol userattribute="orgjob"/>
检查资源操作权限的方法:
boolean hasaddpermission = accesscontroler.checkPermission("testid",//资源id "add",//资源操作 "testresource"//资源类型 ); boolean hasupdatepermission = accesscontroler.checkPermission("testid","write","testresource"); boolean hasdeletepermission = accesscontroler.checkPermission("testid","delete","testresource"); boolean hasreadpermission = accesscontroler.checkPermission("testid","read","testresource"); boolean hasglobaltestreadpermission = accesscontroler.checkPermission("globaltest","read","testresource"); boolean hasglobaltestdeletepermission = accesscontroler.checkPermission("globaltest","delete","testresource");
下一篇: C#-交互式绘图