设为首页 收藏本站
查看: 1388|回复: 0

[经验分享] SharePoint中的用户信息和检索的有关知识

[复制链接]

尚未签到

发表于 2015-9-26 13:01:58 | 显示全部楼层 |阅读模式
  最近在做的项目中涉及到对于SharePoint用户信息的特殊处理,特意整理一些资料出来,给大家参考参考
  
1. 首先,在SharePoint中,要检索到网站的用户,有下面一些相关知识
  http://www.cnblogs.com/LeimOO/archive/2009/09/03/1559790.html
  

  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)文件。
DSC0000.png
  这个用户配置文件是会定期更新的,默认是每天更新一次
DSC0001.png
  
  好吧,虽然这样的工作原理我们是理解的。
  但是,假设我们无法确认用户是否至少登陆过一次,那么有没有办法根据一个用户名或者邮件地址,获取到该用户的信息呢?
  你可能会想到,实际上这需要查询到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.";

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-119124-1-1.html 上篇帖子: SharePoint ShareCase 大赛 下篇帖子: 使用ConditionalScope进行高效的SharePoint CSOM编程
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表