博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SharePoint中的用户信息和检索的有关知识
阅读量:6279 次
发布时间:2019-06-22

本文共 1699 字,大约阅读时间需要 5 分钟。

1. 首先,在SharePoint中,要检索到网站的用户,有下面一些相关知识

 

SPWeb site = SPContext.Current.Web;

SPUserCollection c1 = site.Users;

SPUserCollection c2 = site.AllUsers;

SPUserCollection c3 = site.SiteUsers;

Users 集合是三个集合中包含成员最少的集合。该集合包含了当前网站中所有已显式分配了权限的外部主体。

AllUsers 集合包括 Users 集合中的所有成员,以及通过组或角色成员资格使用隐式权限访问过网站中的对象的外部用户。例如,假定名为 Brian 的用户(登录名 LITWAREINC\BrianC)从未被显式授予访问某个网站和查看特定列表的权限。但他也许仍可以查看列表,因为他所属的 Active Directory 组已被配置了列表查看权限。当 Brian 首次访问网站或其中任一对象(比如,使用隐式权限查看一个列表)时,他会被添加为 AllUsers 集合的成员,但不会被添加为 Users 集合的成员。

SiteUsers 集合是包含了当前网站集中每个 AllUsers 集合的成员的一个聚合。该集合的成员包括所有已分配了对网站集中所有对象的访问权限的外部主体,以及所有已被授予使用隐式权限访问网站集中所有对象的权限的外部用户。

 

一般我们在SharePoint上面添加用户的时候,都可能会用组的方式添加。所以,通常情况下,如果要取得所有用户信息(包括通过组的方式添加的那些用户),我们会用AllUsers。

但这里有一个关键:

如果一个用户是通过组的方式添加到网站的,那么当然他是否访问到该网站的。但也只有当他至少访问过一次该网站之后,我们才可以在Web.AllUsers中检索到他。

为什么会有这样的行为呢?其实也不难理解,而且这种设计还是有些道理的。因为我们知道一个Windows用户组可能包含的用户非常多,假设有10000个用户。那么SharePoint不可能立即把这10000个用户的信息都复制过来。所以它采取了相对更加“智能”的方式来复制用户数据:按需复制。

 

上面提到了复制,这是什么意思呢?其实在SharePoint中,是有一个User Profile的服务的,也就是说,Windows 的AD帐号中的一些信息,会被用某种特定的方式保存在SharePoint中,这就是所谓的用户配置(User Profile)文件。

这个用户配置文件是会定期更新的,默认是每天更新一次

 

好吧,虽然这样的工作原理我们是理解的。

但是,假设我们无法确认用户是否至少登陆过一次,那么有没有办法根据一个用户名或者邮件地址,获取到该用户的信息呢?

你可能会想到,实际上这需要查询到AD中的信息。没错,但我们应该怎么来完成这样的任务呢?

 

 

2.通过代码根据邮件地址查询用户信息

这小段代码虽然很简单,但却解决了我的大问题。

var user = SPUtility.ResolveWindowsPrincipal(this.Site.WebApplication, "test@xizhang.com", Microsoft.SharePoint.Utilities.SPPrincipalType.User, true);            if (user != null)                Literal1.Text = string.Format("UserName:{0},LoginName:{1},Email:{2}", user.DisplayName, user.LoginName, user.Email);            else                Literal1.Text = "The user is not exist.";

转载于:https://www.cnblogs.com/Little-Li/archive/2011/10/12/2208149.html

你可能感兴趣的文章
内核源码树
查看>>
Java 5 特性 Instrumentation 实践
查看>>
AppScan使用
查看>>
Java NIO框架Netty教程(三) 字符串消息收发(转)
查看>>
Ucenter 会员同步登录通讯原理
查看>>
php--------获取当前时间、时间戳
查看>>
Spring MVC中文文档翻译发布
查看>>
docker centos环境部署tomcat
查看>>
JavaScript 基础(九): 条件 语句
查看>>
Linux系统固定IP配置
查看>>
配置Quartz
查看>>
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>
设计模式01:简单工厂模式
查看>>
项目经理笔记一
查看>>
Hibernate一对一外键双向关联
查看>>
mac pro 入手,php环境配置总结
查看>>
MyBatis-Plus | 最简单的查询操作教程(Lambda)
查看>>
rpmfusion 的国内大学 NEU 源配置
查看>>
spring jpa 配置详解
查看>>