有关集中用户的问题
集中用戶應該有一個“所屬管理插件”的字段,記錄此用戶的出處,比如“內部員工”,即由“內部控制臺”插件管理。
?? 那么用戶 staff_tommy 的“所屬管理插件”的字段值為“InternelWebControlPanel”.
?? 系統內核插件提供一個擴展點為“UserProvider”
?? <extension-point id="UserProvider" name="統一用戶提供者" schema="schema/UserProvider.exsd"></extension-point>
???各個需要統一用戶管理功能的插件均可擴展這個擴展點,擴展規格是:必須實現以下接口:
?
/**////?<summary>????///?IUserOpCallBack?統一用戶管理的回調操作。
????///?</summary>
????public?interface?IUserOpCallBack
????{
????????/**////?<summary>
????????///?創建用戶,創建完畢后應將具體用戶的ID存入ISysUser的ExternId域
????????///?</summary>
????????///?<param?name="transaction">事務</param>
????????///?<param?name="userContext">統一用戶上下文</param>????
????????///?<returns>創建狀態</returns>
????????IStatus?CreateUser(IDbTransaction?transaction,?ISysUserContext?userContext);
????????/**////?<summary>
????????///?修改用戶
????????///?</summary>
????????///?<param?name="transaction">事務</param>
????????///?<param?name="userContext">統一用戶上下文</param>
????????///?<returns>創建狀態</returns>
????????IStatus?ModifyUser(IDbTransaction?transaction,?ISysUserContext?userContext);
????????/**////?<summary>
????????///?刪除用戶
????????///?</summary>
????????///?<param?name="trans">事務</param>
????????///?<param?name="userContext">統一用戶上下文</param>
????????///?<returns></returns>
????????IStatus?DeleteUser(IDbTransaction?trans,?ISysUserContext?userContext);
????}
?
/**////?<summary>????///?ISysUserContext?統一用戶的上下文。
????///?</summary>
????public?interface?ISysUserContext
????{
????????/**////?<summary>
????????///?具體的用戶對象,如職員
????????///?</summary>
????????object?ConcreteUser
????????{
????????????get?;
????????}
????????/**////?<summary>
????????///?統一用戶對象
????????///?</summary>
????????ISysUser?SysUser
????????{
????????????get?;
????????}
????}
?
?
/**////?<summary>????///?ISysUser?統一用戶身份接口。
????///?</summary>
????public?interface?ISysUser
????{
????????/**////?<summary>
????????///?具體類型的用戶的ID
????????///?</summary>
????????int?ExternId?{?get;?set;?}
????????/**////?<summary>
????????///?名
????????///?</summary>
????????string?SysUser_FirstName?{?get;?set;?}
????????/**////?<summary>
????????///?自動編號
????????///?</summary>
????????int?SysUser_Id?{?get;?set;?}
????????/**////?<summary>
????????///?密碼
????????///?</summary>
????????string?SysUser_Password?{?get;?set;?}
????????/**////?<summary>
????????///?管理此用戶的插件標識
????????///?</summary>
????????string?SysUser_PluginId?{?get;?set;?}
????????
????????/**////?<summary>
????????///?狀態
????????///?</summary>
????????int?SysUser_Status?{?get;?set;?}
????????/**////?<summary>
????????///?姓
????????///?</summary>
????????string?SysUser_SurName?{?get;?set;?}
????????/**////?<summary>
????????///?賬號
????????///?</summary>
????????string?SysUser_Userid?{?get;?set;?}
????}
用戶所屬的插件可以理解為用戶的域,相同域的用戶不能有同名的賬號.
統一用戶表還應該提供一個 ExternId 的字符型字段, 其值完全由插件系統
去提供,并由其自行理解,可以是一個 int.ToString(),也可以是一個內部編碼什么的。
一般來說,管理具體用戶的插件都有一個用戶表,比如職員表,(不過這個擴展空間很大,誰知道呢,也許是從AD或者LDAP中取得用戶,今天還談了個項目是從別的軟件系統中通過WebService取得用戶,真是千奇百怪),
當這個插件加入系統的時候,希望不要修改這個表結構,如在此表中加入類似“統一用戶ID”這樣的字段,因此在統一用戶表
中加入這個ExternId字段。
轉載于:https://www.cnblogs.com/xiaotaoliang/archive/2006/07/19/455044.html
總結
- 上一篇: iBATIS.NET 学习笔记(八)
- 下一篇: [转载]如何用关键字优化网站?