之前做了一个自定义的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的设置是否正确