`

平台登录插件开发和配置

阅读更多
新版本平台登录插件开发和配置
编写自己的插件,以便在登录后执行相应的操作:
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");
分享到:
评论

相关推荐

    dede插件开发教程

    在开始dede插件开发之前,确保你已安装了dede CMS,并对其基本结构和工作原理有一定了解。你需要一个本地开发环境,包括PHP运行环境(如XAMPP或WAMP)、文本编辑器(如Visual Studio Code或Sublime Text)以及对PHP...

    android插件开发配置

    以下是对"android插件开发配置"的详细解析: 1. **Android插件化原理**: - Android插件化开发基于组件化思想,主要涉及四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的隔离和动态加载。...

    eclipse插件开发指南.pdf

    ### Eclipse插件开发指南...对于希望深入了解Eclipse插件开发的读者来说,《Eclipse插件开发指南》是一本不可多得的好书,它详细介绍了Eclipse插件开发的各个方面,包括基础知识、开发流程和技术细节等,非常值得一读。

    Openfire 的安装和配置、插件开发

    Openfire 安装配置和插件开发详解 Openfire 是一个基于 XMPP 协议的即时通信服务器,可以实现实时的聊天服务。在本文中,我们将详细介绍 Openfire 的安装和配置过程,并探讨如何使用 Eclipse 进行插件开发。 一、...

    Spring-Boot插件式开发框架,为动态扩展系统而生的插件开发框架

    - **实现业务逻辑**:在插件项目中编写具体业务代码,实现插件接口,并配置好SpringBoot的自动配置和依赖注入。 - **插件打包**:根据框架要求打包插件,通常可以是JAR、WAR或其他格式,确保包含所有运行时依赖。 ...

    谷歌插件开发实例(CSDN快速登陆)

    本实例以"谷歌插件开发实例(CSDN快速登陆)"为主题,将介绍如何构建一个能够帮助用户便捷登录CSDN(China Software Developer Network)的Chrome扩展。 首先,了解谷歌插件的基本结构至关重要。一个基本的Chrome插件...

    金蝶K3BOS插件开发入门教程

    金蝶K3BOS插件开发入门教程是金蝶K3业务操作系统(BOS)的扩展开发指南,本文将指导读者从零开始学习BOS插件开发的基本流程和步骤。 一、BOS插件开发的基本概念 BOS插件是一种基于VB语言开发的动态链接库(DLL)...

    Eclipse插件开发教程PPT Eclipse插件开发教程PPT

    Eclipse是一款广泛使用的开源集成开发环境(IDE),其...通过深入学习和实践Eclipse插件开发教程PPT中的内容,开发者不仅可以提升自身技能,还能更好地利用Eclipse平台满足特定开发需求,实现个性化和高效的开发环境。

    supermap 做插件开发

    本文将详细介绍如何使用 SuperMap 进行插件开发,包括插件的创建、配置、开发和测试等方面。 创建插件 首先,需要在 Visual Studio 中创建一个新的插件项目,选择 SuperMap Deskpro Plugin 作为目标框架,并命名为...

    Eclipse插件开发学习笔记全篇+源码.rar

    本文将深入探讨Eclipse插件开发的相关知识点,结合提供的"全书分为4篇共24章"的学习笔记和源码,帮助你更全面地理解和实践Eclipse插件开发。 第一篇:基础篇 在这一篇中,你将学习到Eclipse插件开发的基础知识,...

    K3 WISE BOS插件开发培训(2018版)

    在IT行业中,K3 WISE BOS(Business Operating System)...在"K3 WISE BOS插件开发培训(2018版)"中,学员将通过理论学习和实践操作,全面掌握上述知识点,具备独立开发和维护BOS插件的能力,为企业信息化建设贡献价值。

    2022金蝶云星空插件开发学习文档.zip

    本指南主要聚焦于金蝶云星空的二次开发,特别是插件开发的学习,帮助开发者深入理解并掌握如何在金蝶云星空平台上构建个性化的业务功能。 一、插件开发基础 1. 插件定义:插件是金蝶云星空系统中的一个重要组成...

    kettle插件开发(原创)

    ### Kettle插件开发 #### 一、Kettle简介与组件 Kettle,又称为PDI(Pentaho Data Integration),是一款开源的数据集成工具,它主要用于数据抽取、转换和加载(ETL)。Kettle最初由一家名为Pentaho的公司开发,并...

    idea插件开发-自定义语言

    本教程将专注于自定义语言的插件开发,特别是如何利用properties文件和customLanguage API来实现这一目标。以下是一些核心知识点: 1. **IntelliJ IDEA 插件开发环境搭建** 在开始开发之前,首先需要安装IntelliJ ...

    k3wise插件开发.doc

    k3wise插件开发 Kingdee Wise 插件开发手册提供了详细的指导,帮助...通过对插件开发环境、插件建立、代码演示、插件事件处理和插件测试和部署的详细解释,我们可以更好地理解 Kingdee Wise 插件开发的整个过程。

    IntelliJ IDEA插件开发基础(中文).pdf

    本文档“IntelliJ IDEA插件开发基础(中文)”将指导开发者如何利用其开放的API和插件系统来扩展IDE的功能。 首先,插件开发的基础在于理解IntelliJ IDEA的架构。IDE是基于插件构建的,每个功能模块都是一个独立的...

    Eclipse插件开发笔记源码

    Eclipse提供了一些内置的插件开发工具,如PDE(Plug-in Development Environment),用于创建、编辑和管理插件项目,以及透视图和视图的开发。 8. **命令框架**: Eclipse的命令框架允许开发者定义可执行的动作,...

    Eclipse插件开发文档

    Eclipse插件开发是为这个平台添加新功能或定制工作环境的关键技术。以下将详细介绍Eclipse插件开发的相关知识点。 一、Eclipse插件体系结构 Eclipse基于OSGi(Open Service Gateway Initiative)框架构建,它将整个...

    Eclipse插件开发方法与实战 2006 pdf 464页

    通过学习《Eclipse插件开发方法与实战》,开发者可以掌握插件开发的核心知识,并能够根据自己的需求开发出实用的插件,从而提升个人和团队的开发效率,丰富Eclipse这一强大的开发平台。同时,对于有志于参与开源项目...

    chrome插件开发入门教程

    本教程提供了相关的资源链接,如 Chrome 官方插件开发文档、360 极速浏览器应用开放平台的中文开发文档等。 本教程旨在为开发者提供一个快速入门 Chrome 插件开发的指南,涵盖了插件开发的基本概念、Manifest 文件...

Global site tag (gtag.js) - Google Analytics