SharePoint2013代码操作权限组的几个Demo
1,清明节闲来无聊,敲代码吧,不知道敲什么,不敲吧,又好像比较颓废,不思进取。遂把以前项目中别的同事负责的权限模块的代码看一看,做俩个Demo。
(1)代码创建组
protected void CreateGroup_Click(object sender, EventArgs e)
{
string groupName = this.groupTitle.Text;
string groupDescription = "I'm WanRen,I'm creating group";
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = site.OpenWeb())
{
web.AllowUnsafeUpdates = true;
//组名,拥有者(我理解为创建者,谁创的就是谁的罢),组里的默认用户,组描述
web.SiteGroups.Add(groupName, web.CurrentUser, null, groupDescription);
//获取到刚刚创建的这个组
SPGroup group = web.SiteGroups[groupName];
//将当前用户添加到改组中
SPUser user = web.EnsureUser("liuwanren");
//不要将系统用户往组里添加,是显示不出来的
group.Users.Add(user.LoginName, user.Email, user.Name, user.Notes);
group.Update();
//基于这个组定义一个角色
SPRoleAssignment assignment = new SPRoleAssignment(group);
//创建一个权限级别
SPRoleDefinition definition = web.RoleDefinitions.GetByType(SPRoleType.Administrator);
//给角色绑定一个权限
assignment.RoleDefinitionBindings.Add(definition);
//将该角色添加到web的角色集合中
web.RoleAssignments.Add(assignment);
web.Update();
web.AllowUnsafeUpdates = false;
ScriptManager.RegisterStartupScript(this, this.GetType(), "result", "alert('" + "创建成功" + "');", true);
}
}
});
}
(2)代码删除组
protected void DeleteGroup_Click(object sender, EventArgs e)
{
string groupName = this.groupTitle.Text;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = site.OpenWeb())
{
foreach (SPGroup group in web.SiteGroups)
{
if (group.Name.Equals(groupName))
{
web.SiteGroups.Remove(group.Name);
break;
}
}
}
}
});
ScriptManager.RegisterStartupScript(this, this.GetType(), "result", "alert('" + "删除成功" + "');", true);
}
(3)获取组并从组中移除用户
protected void GetGroup_Click(object sender, EventArgs e)
{
string groupName = this.groupTitle.Text;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = site.OpenWeb())
{
foreach (SPGroup group in web.SiteGroups)
{
if (group.Name.Equals(groupName))
{
if (group.Users.Count > 0)
{
foreach (SPUser user in group.Users)
{
group.Users.Remove(user.LoginName);
}
}
break;
}
}
}
}
});
ScriptManager.RegisterStartupScript(this, this.GetType(), "result", "alert('" + "获取并移除用户成功" + "');", true);
}
(4)获取组,判断组中是否存在某用户。
做完这个Demo,让我看到到了我这个初级程序员和同事这个高级程序员(5年工作经验)之间的差别所在。
先看我的代码:
protected void InGroup_Click(object sender, EventArgs e)
{
string groupName = this.groupTitle.Text;
string userLoginName = this.userLoginName.Text;
string inGroup = "用户在组中";
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPSite site = new SPSite(SPContext.Current.Web.Url))
{
using (SPWeb web = site.OpenWeb())
{ SPUser user = web.EnsureUser(userLoginName);
foreach (SPGroup group in user.Groups)
{
if (group.Name.Equals(groupName))
{
inGroup = "用户存在组中";
}
else
{
inGroup = "用户不存在组中";
}
} }
}
});
ScriptManager.RegisterStartupScript(this, this.GetType(), "result", "alert('" + inGroup + "');", true);
}
同事的代码
public static class SPUserExtension
{
public static bool InGroup(this SPUser user, SPGroup group)
{
return user.Groups.Cast<SPGroup>()
.Any(g => g.ID == group.ID); }
}
哎,虽然都实现了同样的效果,但是一看这代码立马就显示出了一个程序员水平的高低。这扩展方法、泛型啥的我也都懂。水平在这儿摆着,即使遇到新功能,想到的也只是用最普通的解决办法解决问题。想不到最直接有效的方法。
继续努力ing...
SharePoint2013代码操作权限组的几个Demo的更多相关文章
- 开发环境入门 linux基础 (部分) 复制 用户和组操作 权限更改
复制 用户和组操作 权限更改 CP 复制命令 cp 源文件 目标文件 a) –r(recursive,递归的):递归地复制目录.当复制一个目录时,复制该目录中所有的内容,其中包括子目录的全部内容. b ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- 用最基本的EF+MVC+JQ+AJAX+bootstrap实现权限管理的简单实例 之登陆和操作权限
先来一堆关于上篇文章的废话(不喜者点此隐藏) 今天把博客加了个小功能,就是点标题可以隐藏或展示相关内容,做法很傻,就是引用了bootstrap的两个css类和全部的js文件,其实这样的小功能完全应该自 ...
- 053医疗项目-模块五:权限设置-将用户操作权限写入Session
权限管理指的是用户授权,与拦截器没有关系.拦截器只是一个技术,也可以用别的技术来实现的.别人问你权限管理,可不要和人家说什么拦截器.要说用户授权 前一篇文章是把实现了不同的用户呈现不用的菜单.这一篇文 ...
- 【转】操作权限不够?教你开启Win7管理员帐户
在Win7中进行一些设置,或修改某些文件时,经常会弹出当前帐户没有操作权限的提示,即使已经是管理员账户也不行.事实上,出于安全方面的考虑,默认情况下Win7系统的系统管理员Administrator账 ...
- 不使用spring的情况下用java原生代码操作mongodb数据库的两种方式
由于更改了mongodb3.0数据库的密码,导致这几天storm组对数据进行处理的时候,一直在报mongodb数据库连接不上的异常. 主要原因实际上是和mongodb本身无关的,因为他们改的是配置 ...
- Asp.Net Core 2.0 项目实战(11) 基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级
1.权限管理 权限管理的基本定义:百度百科. 基于<Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员.后台管理员同时登录>我们做过了登录认证, ...
- net core体系-web应用程序-4asp.net core2.0 项目实战(1)-13基于OnActionExecuting全局过滤器,页面操作权限过滤控制到按钮级
1.权限管理 权限管理的基本定义:百度百科. 基于<Asp.Net Core 2.0 项目实战(10) 基于cookie登录授权认证并实现前台会员.后台管理员同时登录>我们做过了登录认证, ...
- 第八章| 2. MySQL数据库|数据操作| 权限管理
1.数据操作 SQL(结构化查询语言),可以操作关系型数据库 通过sql可以创建.修改账号并控制账号权限: 通过sql可以创建.修改数据库.表: 通过sql可以增删改查数据: 可以通过SQL语句中 ...
随机推荐
- html和css入门 (二)
CSS基础 什么是CSS 简单来说,层叠样式表(Cascading Style Sheet)是一种专门用来控制界面外观风格的文档. CSS发展历史 1996年 CSS 1.0 规范面世,其中加入了字体 ...
- UOJ42. 【清华集训2014】Sum
传送门 Sol \((-1)^a=1-2(a~mod~2)=1-2a+4\lfloor\frac{a}{2}\rfloor\) 那么原式变成 \(n-2\sum_{i=1}^{n}\lfloor d\ ...
- POJ P2318 TOYS与POJ P1269 Intersecting Lines——计算几何入门题两道
rt,计算几何入门: TOYS Calculate the number of toys that land in each bin of a partitioned toy box. Mom and ...
- 手机浏览器的User-Agent汇总
手机浏览器的User-Agent汇总 之前介绍的 更简洁的方式修改Chrome的User Agent,轻松体验移动版网络这种简洁的方法好像只适用于Chrome, Chrome不只是浏览界面简洁,对应的 ...
- c# 圆上坐标点
var x=-33204.0924438; //圆心x var y=-9512.41208658; //圆心y var r=1000;//半径 var angle=30;//角度 var tmpX ...
- C#编写强大的SQL Server数据库自动备份服务
数据库自动备份服务,带配置,还算可以吧 周末抽时间,编写了一个这样的工具,可以让,对数据库不了解或不熟悉的人,直接学会使用备份,省时省力,同样,我也将一份,通过脚本进行备份的,也奉献上来, 通过sql ...
- maven项目在idea下右键不出现maven的解决办法
重新删除项目,导出 再重新引入.
- [翻译] Shimmer
Shimmer Shimmer is an easy way to add a shimmering effect to any view in your app. It's useful as an ...
- 通过u盘启动盘重装系统
前言:一直想通过u盘启动盘给旧本装个win7,但是发现网上完整的教程很少.这里分享给大家我重装的一些步骤和遇到的问题. 前期准备: 1.我们要准备一个容量在4G以上的U盘. 2.我们要将U盘中的重要数 ...
- JS实现手机摇一摇功能
//运动事件监听 if (window.DeviceMotionEvent) { window.addEventListener('devicemotion',deviceMotionHandler, ...