zoukankan      html  css  js  c++  java
  • 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())

  • 相关阅读:
    -bash: fork: Cannot allocate memory 问题的处理
    Docker top 命令
    docker常见问题修复方法
    The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)
    What's the difference between encoding and charset?
    hexcode of é î Latin-1 Supplement
    炉石Advanced rulebook
    炉石bug反馈
    Sidecar pattern
    SQL JOIN
  • 原文地址:https://www.cnblogs.com/IsNull/p/1878622.html
Copyright © 2011-2022 走看看