如何使用用户ID(domain_name\userid)获取SPUser对象

7

我有该用户的登录ID。但是在代码中,我想将该登录名转换为SPUser对象。我可以将LoginName(字符串类型)转换为SPUser吗?还是有没有办法将windows身份用户令牌转换为SPUser。 我正在向spgroup添加用户(因此不存在于站点上)。 我所拥有的只是Windows用户令牌。

2个回答

21

请参考SPWeb.EnsureUser。根据 MSDN 文档所述:

“检查指定的登录名是否属于网站的有效用户,如果该登录名不存在,则将其添加到网站中。”

使用方法如下:

SPUser newUser = SPContext.Current.Web.EnsureUser(@"domain\logonname");

8
EnsureUser需要小心使用——如果找不到你要查找的用户,它会创建一个新用户。 - Dennis G
如果我需要从用户那里获取名称,而这些用户并不一定在网站上注册,但是他们存在于ActiveDirectory中怎么办?(我不需要他们添加到该网站) - rolivares
@rolivares - 你只需要他们的显示名称吗? - CBono
是的,我需要列出所有可能的用户(姓名和ID),因此我需要列出连接到Sharepoint的ActiveDirectory中的用户,而不仅仅是具有查看站点权限的用户。 - rolivares
@rolivares - 这听起来像是您需要为每个存储库设置自定义身份验证提供程序。一旦您这样做了,就可以搜索、查找和列出所有用户,将他们添加到组中等等。http://blogs.msdn.com/b/russmax/archive/2010/05/27/understanding-sharepoint-2010-claims-authentication.aspx - CBono
显示剩余3条评论

9
SPUser user = SPContext.Current.Web.Users["domain\\login"];

我正在将用户添加到一个群组中。所以他在该网站上不存在。 - sssreddy
1
因此,请像CBono帖子中所述使用EnsureUser。 - Andrey Markeev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接