有关集中用户的问题

集中用户应该有一个“所属管理插件”的字段,记录此用户的出处,比如“内部员工”,即由“内部控制台”插件管理。
   那么用户 staff_tommy 的“所属管理插件”的字段值为“InternelWebControlPanel”.
   系统内核插件提供一个扩展点为“UserProvider”
   <extension-point id="UserProvider" name="统一用户提供者" schema="schema/UserProvider.exsd"></extension-point>
   各个需要统一用户管理功能的插件均可扩展这个扩展点,扩展规格是:必须实现以下接口:

 

ExpandedBlockStart.gifContractedBlock.gif/**//// <summary>
InBlock.gif    
/// IUserOpCallBack 统一用户管理的回调操作。
ExpandedBlockEnd.gif    
/// </summary>

None.gif    public interface IUserOpCallBack
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 创建用户,创建完毕后应将具体用户的ID存入ISysUser的ExternId域
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="transaction">事务</param>
InBlock.gif        
/// <param name="userContext">统一用户上下文</param>    
ExpandedSubBlockEnd.gif        
/// <returns>创建状态</returns>

InBlock.gif        IStatus CreateUser(IDbTransaction transaction, ISysUserContext userContext);
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 修改用户
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="transaction">事务</param>
InBlock.gif        
/// <param name="userContext">统一用户上下文</param>
ExpandedSubBlockEnd.gif        
/// <returns>创建状态</returns>

InBlock.gif        IStatus ModifyUser(IDbTransaction transaction, ISysUserContext userContext);
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 删除用户
InBlock.gif        
/// </summary>
InBlock.gif        
/// <param name="trans">事务</param>
InBlock.gif        
/// <param name="userContext">统一用户上下文</param>
ExpandedSubBlockEnd.gif        
/// <returns></returns>

InBlock.gif        IStatus DeleteUser(IDbTransaction trans, ISysUserContext userContext);
ExpandedBlockEnd.gif    }

 

ExpandedBlockStart.gifContractedBlock.gif/**//// <summary>
InBlock.gif    
/// ISysUserContext 统一用户的上下文。
ExpandedBlockEnd.gif    
/// </summary>

None.gif    public interface ISysUserContext
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 具体的用户对象,如职员
ExpandedSubBlockEnd.gif        
/// </summary>

InBlock.gif        object ConcreteUser
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
get ;
ExpandedSubBlockEnd.gif        }

InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 统一用户对象
ExpandedSubBlockEnd.gif        
/// </summary>

InBlock.gif        ISysUser SysUser
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
get ;
ExpandedSubBlockEnd.gif        }

ExpandedBlockEnd.gif    }

 

 

ExpandedBlockStart.gifContractedBlock.gif/**//// <summary>
InBlock.gif    
/// ISysUser 统一用户身份接口。
ExpandedBlockEnd.gif    
/// </summary>

None.gif    public interface ISysUser
ExpandedBlockStart.gifContractedBlock.gif    
dot.gif{
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 具体类型的用户的ID
ExpandedSubBlockEnd.gif        
/// </summary>

ExpandedSubBlockStart.gifContractedSubBlock.gif        int ExternId dot.gifgetset; }
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 名
ExpandedSubBlockEnd.gif        
/// </summary>

ExpandedSubBlockStart.gifContractedSubBlock.gif        string SysUser_FirstName dot.gifgetset; }
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 自动编号
ExpandedSubBlockEnd.gif        
/// </summary>

ExpandedSubBlockStart.gifContractedSubBlock.gif        int SysUser_Id dot.gifgetset; }
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 密码
ExpandedSubBlockEnd.gif        
/// </summary>

ExpandedSubBlockStart.gifContractedSubBlock.gif        string SysUser_Password dot.gifgetset; }
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 管理此用户的插件标识
ExpandedSubBlockEnd.gif        
/// </summary>

ExpandedSubBlockStart.gifContractedSubBlock.gif        string SysUser_PluginId dot.gifgetset; }
InBlock.gif        
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 状态
ExpandedSubBlockEnd.gif        
/// </summary>

ExpandedSubBlockStart.gifContractedSubBlock.gif        int SysUser_Status dot.gifgetset; }
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 姓
ExpandedSubBlockEnd.gif        
/// </summary>

ExpandedSubBlockStart.gifContractedSubBlock.gif        string SysUser_SurName dot.gifgetset; }
InBlock.gif
ExpandedSubBlockStart.gifContractedSubBlock.gif        
/**//// <summary>
InBlock.gif        
/// 账号
ExpandedSubBlockEnd.gif        
/// </summary>

ExpandedSubBlockStart.gifContractedSubBlock.gif        string SysUser_Userid dot.gifgetset; }
ExpandedBlockEnd.gif    }


用户所属的插件可以理解为用户的域,相同域的用户不能有同名的账号.
统一用户表还应该提供一个 ExternId 的字符型字段, 其值完全由插件系统
去提供,并由其自行理解,可以是一个 int.ToString(),也可以是一个内部编码什么的。

一般来说,管理具体用户的插件都有一个用户表,比如职员表,(不过这个扩展空间很大,谁知道呢,也许是从AD或者LDAP中取得用户,今天还谈了个项目是从别的软件系统中通过WebService取得用户,真是千奇百怪),
当这个插件加入系统的时候,希望不要修改这个表结构,如在此表中加入类似“统一用户ID”这样的字段,因此在统一用户表
中加入这个ExternId字段。

转载于:https://www.cnblogs.com/xiaotaoliang/archive/2006/07/19/455044.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263297.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html5 学习笔记三(web存储)

HTML5 提供了两种在客户端存储数据的新方法&#xff1a; localStorage - 没有时间限制的数据存储sessionStorage - 针对一个 session 的数据存储之前&#xff0c;这些都是由 cookie 完成的。但是 cookie 不适合大量数据的存储&#xff0c;因为它们由每个对服务器的请求来传递&a…

mobile web retina 下 1px 边框解决方案

http://www.tuicool.com/articles/ZRv6bun 再谈mobile web retina 下 1px 边框解决方案 时间 2015-01-03 12:03:31 Hugo Web前端开发原文 http://www.ghugo.com/css-retina-hairline/主题 WebKit iOS CSS本文实际上想说的是ios8下 1px解决方案。 1px的边框在devicePixelRatio…

LeetCode—55. 跳跃游戏

55. 跳跃游戏 题目描述&#xff1a; 给定一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标。 考察重点&#xff1a;由前至后遍历数组&#xff0c;maxPos记录我们当…

ASP.NET----利用隐藏域向页面间数据传递

摘要&#xff1a; 隐藏域不会显示在用户的浏览器中&#xff0c; 一般是在页面中加入一个隐藏控件&#xff0c; 与服务器进行交互时把值赋给隐藏控件并提交给下一页面。隐藏域可以是任何存储在网页中的与网页有关的信息的存储库。 使用&#xff1a; 使用隐藏域存入数值时用&…

[转载]如何用关键字优化网站?

如何用关键字优化网站&#xff1f;     搜索引擎使用关键字的相关程度来决定网页的先后顺序。例如&#xff0c;如果有人搜索“ butterbeans ”&#xff0c;那么一个标题为“ the butterbean bazaar ”、里面有十余处单词“ butterbeans ”的网页&#xff0c;可能就会排在搜索…

Rust下载和安装

2019独角兽企业重金招聘Python工程师标准>>> 1、在Linux和Mac上安装Rust&#xff1a; 在Linux和Mac上安装Rust(稳定的二进制)的一个简单的方法&#xff0c;只需要在shell中运行以下命令&#xff1a; $ curl -sSf https://static.rust-lang.org/rustup.sh | sh 一个…

WP7 空闲检测 当手机处理锁屏状态时 如何让程序继续运行 如 在锁屏状态下继续录音。...

我们都知道&#xff0c;当手机锁屏后&#xff0c;我们的app 会自动进行休眠或是说墓碑状态。也就是说app已经空闲&#xff0c;这样最大的好处是省电。关于些可以在MSDN上找到非常详细的说明&#xff1a;http://msdn.microsoft.com/zh-cn/library/ff941090(vvs.92).aspx 我这里要…

LeetCode—300. 最长递增子序列

300. 最长递增子序列 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组…

思念

你不在的时候 我很想你 想你的时候 我偷偷的看你,拿着照片 然后轻轻的放在 自己的枕边 你不在的时候 我常常幻想 有一天 我们一起去海边 看潮起潮落 欢乐嬉戏 看着你 自由自在的 捡海边的贝壳 和留在沙滩上的足迹 你不在的时候 我常常思念 带你去看美丽的风景 牵着你的手 走过黄…

TreeView 实现单选与多选!

最近在做临测项目,涉及到了,实现用户的单选与多选,用户中从域中域中读取的.查找了一些资料,实现了此方法,大家一起分享一下.UserTree.aspx<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4…

Skype for Business Server 2015-08-反向代理-发布-统一沟通

申明&#xff1a;文章中部分内容有涉及官方帮助或者网上资源整合&#xff0c;如有违权&#xff0c;请速与作者联系&#xff0c;谢谢&#xff01;作者&#xff1a;316191099qq.com培训&#xff1a;Skype for Business Server 2015-项目实战-培训-QQ群:65235615。&#xff08;学员…

架构师小跟班:如何高效又安全的清理Linux服务器上的缓存?

操作服务器上的生产环境&#xff0c;一定要慎之又慎&#xff0c;安全第一&#xff0c;优化第二&#xff01; 一些基本原理 说到清理内存&#xff0c;那么不得不提到/proc这一个虚拟文件系统&#xff0c;这里面的数据和文件都是内存中的实时数据&#xff0c;很多参数的获取都可以…

解题报告 Diamonds

1. 题目 diamonds 题目描述 小keke同学非常喜欢玩俄罗斯方块&#xff08;*^*&#xff09;,他最近发现传统的俄罗斯方块很无趣&#xff0c;于是他想到了一个新规则的游戏来恶心你&#xff08;……&#xff0c;没素质啊&#xff09;。 游戏是这样的&#xff1a; 给定你一个宽度为…

LeetCode—233. 数字 1 的个数(困难)

233. 数字 1 的个数&#xff08;困难&#xff09; 题目描述&#xff1a; 给定一个整数 n&#xff0c;计算所有小于等于 n 的非负整数中数字 1 出现的个数。 考察重点&#xff1a;分别计算个、十、百…千位上1出现的次数&#xff0c;再求和。 func countDigitOne(n int) int…

趣味教程:从女娲造人谈类、属性、方法及实例

前言:相信大家都听说过女娲造人的故事&#xff0c;不过细节可能不会太清楚&#xff0c;我现在略述如下&#xff0c;您可要仔细听哦&#xff0c;这和我们今天要聊的主题有莫大的关系呀。 女娲是一个人身龙尾的女神。盘古开天辟地以后&#xff0c;也就在天地间到处游历。她虽然是…

JavaScript--fullPage.js插件

GitHub:https://github.com/alvarotrigo/fullPage.js FullPage.js是一个基于JQuery的插件,可以很方便的制作出全屏网站; 一 特点: 1.支持鼠标滚动;2.支持键盘控制前进和后退;3.多个回调函数;4.支持手机/平板触摸事件;5.支持CSS3动画;6.支持窗口缩放,缩放时自动调整;7.jQuery兼…

细细讲述Java技术开发的那些不为人知的规则

本文介绍的Java规则的说明分为3个主要级别&#xff0c;中级是平时开发用的比较多的级别&#xff0c;在今后将陆续写出其他的规则。遵守了这些规则可以提高程序的效率、使代码又更好的可读性等。 一、在finally方法里关掉input或者output资源 方法体里面定义了input或者output流…

SQL Server 获取所有表和数据的批量操作

最近要写触发器&#xff0c;对数据库中每个用户表都要写&#xff0c;一查170多个表&#xff0c;晕了~&#xff0c;想偷懒自制程序完成这些一些批量的操作&#xff0c;所以搜集了一下对数据库其他操作的东东&#xff01; --一时兴起&#xff0c;随处搜集 1、创建数据库 CREATE D…

创业,程序员心中说不出的痛

一个从事IT行业5年以上的人&#xff0c;你问他有没有想过自己创业&#xff0c;他说没有&#xff0c;那95&#xff05;的可能是假的。不过&#xff0c;我属于那剩下5&#xff05;里面的其中一个。也许是受我父亲的影响&#xff0c;从小我就潜移默化的受到这样的教育&#xff1a;…

LeetCode—301. 删除无效的括号(困难)

301. 删除无效的括号&#xff08;困难&#xff09; 题目描述&#xff1a; 给你一个由若干括号和字母组成的字符串 s &#xff0c;删除最小数量的无效括号&#xff0c;使得输入的字符串有效。 返回所有可能的结果。答案可以按 任意顺序 返回。 考察重点&#xff1a;题目要求找…