当前位置: 代码迷 >> SharePoint >> SharePoint Form认证重名有关问题
  详细解决方案

SharePoint Form认证重名有关问题

热度:9779   发布时间:2013-02-26 00:00:00.0
SharePoint Form认证重名问题
之前做了一个自定义的MembershipProvider可以实现用户登录,但是发现必须以返回的MembershipUser对象的UserName去登录站点,然后问题来了, 重名的用户肯定会有,现在用的测试数据就更不用说了,一大堆重名的,员工编号为一, 但是我返回的时候是作为providerUserKey属性返回的,
MembershipUser user = new MembershipUser(this.Name, name, userNo(用户编码), email, string.Empty, string.Empty,
                        true, true, new DateTime(1900, 1, 1), new DateTime(1900, 1, 1), new DateTime(1900, 1, 1), new DateTime(1900, 1, 1), new DateTime(1900, 1, 1));
                    return user;

然后在SharePoint中在PeopleEditor中输入名字后发现取不到这个providerUserKey(员工编号)  就是找不到唯一的员工了。 想请教有谁遇到过这问题,  希望给个思路 ...
  万分感激``

------解决方案--------------------------------------------------------
这个我测试过,可以成功的:
 using (SPSite Site = new SPSite("http://MossSiteURL/")) 
            { 
                using (SPWeb Web = Site.OpenWeb()) 
                { 
                    SPList UserInfoList = Web.Lists["User Information List"]; 
                    SPUser User = Web.Users.GetByID(1); // 你可以用foreach 来遍历 
                    User.Name = "New dispaly name";
                    User.Update(); 
                }
 
            }

但是只能改该用户在当前网站及其子网站的显示名称。
改UserProfile可以只改一次,所有网站都生效。
------解决方案--------------------------------------------------------
我写的代码,遍历代码你自己修改了。 
SPUser user = SPContext.Current.Web.SiteUsers[myLoginName];
                            //SPUser sptest = SPContext.Current.Web.CurrentUser;
                            object getName = user.ID + ";#" + user.Name;

                            item["Manager"] = getName;

------解决方案--------------------------------------------------------
看看“所有网站集”中是否有my,没有创建一个,到User Profile service application中看看My Sites的设置是否正确
  相关解决方案