平台登录插件开发和配置

[size=xx-large][b]平台登录插件开发和配置[/b][/size]
编写自己的插件,以便在登录后执行相应的操作:

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" /> 

即可。

[size=xx-large][b]备注[/b][/size]
平台后台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");//获取用户直属机构岗位信息


[b][size=large]获取用户登录信息[/size][/b]
[b]老版本平台[/b]
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用户所属机构对象


新版平台获取用户

userAccount:用户账号
userID:用户唯一标识
depart:部门名称
departId:部门id
job:用户岗位信息
title:中文名称(userAccount);
userName:用户中文名称
userSex:用户性别
worknumber:工号
telphone:手机号码
userLeaderid:主管id
userLeaderName:主管名称
userLeaderAccount:主管账号


同时系统可以扩展自己的用户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");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值