MOSS的用户配置文件及其管理
上一篇讲到了一个组织层次结构与AD同步的问题。实际上,我们还可以深入地了解一下有关用户配置的细节。
MOSS的共享服务可以帮我们保存所谓的用户配置文件。这些信息默认包含以下.黑色粗体字的部分是可以编辑的
- 显示名称:Id , 代码名称:UserProfile_GUID, 是否可以编辑? : False
- 显示名称:SID , 代码名称:SID, 是否可以编辑? : False
- 显示名称:Active Directory ID , 代码名称:ADGuid, 是否可以编辑? : False
- 显示名称:帐户名 , 代码名称:AccountName, 是否可以编辑? : False
- 显示名称:姓氏 , 代码名称:LastName, 是否可以编辑? : False
- 显示名称:名字 , 代码名称:FirstName, 是否可以编辑? : False
- 显示名称:名称 , 代码名称:PreferredName, 是否可以编辑? : False
- 显示名称:单位电话 , 代码名称:WorkPhone, 是否可以编辑? : False
- 显示名称:办公室 , 代码名称:Office, 是否可以编辑? : False
- 显示名称:部门 , 代码名称:Department, 是否可以编辑? : False
- 显示名称:职务 , 代码名称:Title, 是否可以编辑? : False
- 显示名称:经理 , 代码名称:Manager, 是否可以编辑? : False
- 显示名称:描述 , 代码名称:AboutMe, 是否可以编辑? : True
- 显示名称:个人网站 , 代码名称:PersonalSpace, 是否可以编辑? : False
- 显示名称:图片 , 代码名称:PictureURL, 是否可以编辑? : True
- 显示名称:用户名 , 代码名称:UserName, 是否可以编辑? : False
- 显示名称:快速链接 , 代码名称:QuickLinks, 是否可以编辑? : False
- 显示名称:网站 , 代码名称:WebSite, 是否可以编辑? : False
- 显示名称:公共网站重定向 , 代码名称:PublicSiteRedirect, 是否可以编辑? : False
- 显示名称:非直属经理 , 代码名称:SPS-Dotted-line, 是否可以编辑? : False
- 显示名称:同级 , 代码名称:SPS-Peers, 是否可以编辑? : False
- 显示名称:职责 , 代码名称:SPS-Responsibility, 是否可以编辑? : True
- 显示名称:技能 , 代码名称:SPS-Skills, 是否可以编辑? : True
- 显示名称:过去参与的项目 , 代码名称:SPS-PastProjects, 是否可以编辑? : True
- 显示名称:兴趣 , 代码名称:SPS-Interests, 是否可以编辑? : True
- 显示名称:学校 , 代码名称:SPS-School, 是否可以编辑? : True
- 显示名称:SIP 地址 , 代码名称:SPS-SipAddress, 是否可以编辑? : False
- 显示名称:生日 , 代码名称:SPS-Birthday, 是否可以编辑? : True
- 显示名称:我的网站升级 , 代码名称:SPS-MySiteUpgrade, 是否可以编辑? : True
- 显示名称:“不建议”列表 , 代码名称:SPS-DontSuggestList, 是否可以编辑? : True
- 显示名称:代理服务器地址 , 代码名称:SPS-ProxyAddresses, 是否可以编辑? : False
- 显示名称:雇用日期 , 代码名称:SPS-HireDate, 是否可以编辑? : True
- 显示名称:上一个添加的同事 , 代码名称:SPS-LastColleagueAdded, 是否可以编辑? : True
- 显示名称:Outlook Web Access URL , 代码名称:SPS-OWAUrl, 是否可以编辑? : True
- 显示名称:资源林 SID , 代码名称:SPS-ResourceSID, 是否可以编辑? : False
- 显示名称:资源林帐户名 , 代码名称:SPS-ResourceAccountName, 是否可以编辑? : False
- 显示名称:主帐户名 , 代码名称:SPS-MasterAccountName, 是否可以编辑? : False
- 显示名称:助手 , 代码名称:Assistant, 是否可以编辑? : True
- 显示名称:工作电子邮件 , 代码名称:WorkEmail, 是否可以编辑? : False
- 显示名称:移动电话 , 代码名称:CellPhone, 是否可以编辑? : True
- 显示名称:传真 , 代码名称:Fax, 是否可以编辑? : True
- 显示名称:住宅电话 , 代码名称:HomePhone, 是否可以编辑? : True
那么,为什么需要所谓的用户配置文件呢?这主要是为了跨程序之间可以共享一些设置,例如用户对于网站主题的选择,颜色的选择等等。
除了以上内置的属性之外,我们还可以自定义属性
这个机制与ASP.NET内置的那个Profile机制很类似。添加好之后,大致如下(请注意,最后一行是我们添加到自定义属性)
那么,如何在代码里面检索这些属性呢?
using Microsoft.Office.Server;
using Microsoft.Office.Server.Administration;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint;
//需要添加到引用是Microsoft.SharePoint.dll,Microsoft.Office.Server
using (SPSite site = new SPSite(txtSite.Text))//如果在webpart里面,则可以用SPContext.Current.Site取得当前的站点
{
ServerContext context = ServerContext.GetContext(site);
UserProfileManager profiles = new UserProfileManager(context);
string useraccount = @"XIZHANG\Administrator";
if (profiles.UserExists(useraccount))
{
UserProfile profile = profiles.GetUserProfile(useraccount);
foreach (Property property in profiles.Properties)
{
if (property != null)
{
richTextBox1.AppendText("显示名称:"+property.DisplayName + " , 代码名称:" + property.Name + ", 是否可以编辑? : " +property.IsUserEditable+"\n");
}
}
}
}
常见的一些场景,例如
1. 读取经理
profile["Manager"].Value.ToString()
2. 读取邮件地址
profile["WorkEmail"].Value.ToString()
以上可以实现对于属性的读取,那么如何写入属性呢?
profile["Color"].Value = "绿色";
profile.Commit();
需要特别注意的是,如果更改了AD里面的信息,并不会立即反映在配置文件中。因为配置文件其实与AD没有在一起。需要配置导入策略。