• 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

     

    那么,为什么需要所谓的用户配置文件呢?这主要是为了跨程序之间可以共享一些设置,例如用户对于网站主题的选择,颜色的选择等等。

    除了以上内置的属性之外,我们还可以自定义属性

    image

    这个机制与ASP.NET内置的那个Profile机制很类似。添加好之后,大致如下(请注意,最后一行是我们添加到自定义属性)

    image

    那么,如何在代码里面检索这些属性呢?

    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没有在一起。需要配置导入策略。

    moss 中读取AD域用户信息的方法总结
    2010-05-19 14:46

    在moss环境下,读取域用户信息,经过查资料,终于很容易就读出Ad域用户的指定属性信息,很简单,代码如下:

    //获取目录中需要的组织单元(OU)
            public string GetHomePageByGetAllOU(string curUserName)
            {
                string aa = "/";
                 DirectoryEntry entry = new DirectoryEntry("LDAP://" + domainName, "msdev\\Administrator", "123456!", AuthenticationTypes.Secure);
                 DirectorySearcher mySearcher = new DirectorySearcher(entry);
                mySearcher.Filter = ("(objectClass=user)");

                foreach (SearchResult resEnt in mySearcher.FindAll())
                {
                    if (resEnt.GetDirectoryEntry() != null && resEnt.GetDirectoryEntry().Properties["sAMAccountName"].Value.ToString().Trim() == curUserName.Trim())

  • 相关阅读:
    poj 2728 Desert King(最小比率生成树,迭代法)
    HDU
    hud 2089 不要62 (数位dp)
    食物链(带全并查集)
    docNet基础学完感想
    zoj 1081 (改进的弧长算法)(转)
    zoj 1962 How Many Fibs?(字符串化为数字处理)
    zoj 1109 zoj 1109 Language of FatMouse(字典树)
    iOS开发网络数据之AFNetworking使用
    iOS 使用AFNetworking
  • 原文地址:https://www.cnblogs.com/IsNull/p/1878622.html
Copyright © 2020-2023  润新知