每个系统都会有自己的用户权限管理, 如果一个系统是建立在SharePoint平台上,可以直接利用Sharepoint的user/group来管理用户。
Sharepoint 2007已经可以做到对权限的控制细化到list field,而且子站点还以继承,也可以设置独立的peopel group,还提供了和AD的集成。一个intranet系统非常适合用Sharepoint 2007作为平台来开发协作式系统。可以直接利用Sharepoint的user/group来管理用户和权限。我在一个实际系统中,做了一次实践:
这个系统的用户都是AD域用户,所以不需要用户管理的功能。系统的功能要根据角色加以控制。我就把sharepoint的group作为角色使用,每个角色定义一个group。对用户的授权就是将用户加入到对应的group中,非常简单。
下面是判断当前用户是否是Approver角色的代码。
//check user's approve role,
SPSite site = new SPSite(Public.ServerURL);
SPWeb web = site.OpenWeb(Public.GetSiteURL(EventTypes.Engagement));
SPGroup approver = web.Groups["Approver"];
foreach (SPUser user in approver.Users)
{
string username = user.LoginName.Substring(user.LoginName.LastIndexOf(@"/") + 1);
if (username == loginusername )
{
roles.Add((int)EWSData.UserRoles.MTCApprover);
}
}
上面的代码不支持对用户组的支持。如果要支持用户组,不能简单用username比较,需要复杂些的处理。
需要注意的是,如果group的设置
Who can view the membership of the group?
设置为Group Members,当不是本组的用户执行上面的代码,系统会报错。出现一个登录对话框。
建议将此项设置为Everyone 。