sharepoint2010如何根据用户登录名获取有权限的列表记录?
2013-01-28 16:03
169 查看
大家都知道在sharepoint2010登录,系统自动根据登录用户给出有权限的列表记录?但是有些业务场景用户不能登录,如对外提供接口给业务系统调用列表数据,需要根据不同用户返回不同的列表记录。此时需要考虑如何根据登录名获取有权限的列表记录。下面我介绍2个方法来进行
1、通过DoesUserHavePermissions来获取有权限的记录
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
2、通过UserToken来获取有权限的记录
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
1、通过DoesUserHavePermissions来获取有权限的记录
//申明集合 List<EGNewsEntity> EGNewsEntityList = new List<EGNewsEntity>(); try { //得到列表 SPList m_objList = web.Lists[listName]; //查询 SPQuery query = new SPQuery(); query.Query = strWhere; //查询的字段 if (ViewField.Length > 0) { query.ViewFields = BuildViewFields(ViewField); } SPListItemCollection m_objListItemColl = m_objList.GetItems(query); //根据当前用户判断是否有权限的记录条数 foreach (SPListItem item in m_objListItemColl) { //判断用户是否有有改记录的阅读权限(查看权限) if (item.DoesUserHavePermissions(user, SPBasePermissions.ViewListItems)) { //申明实体类 EGNewsEntity entity = new EGNewsEntity(); //赋值 entity.ID = item["ID"] == null ? string.Empty : item["ID"].ToString(); entity.Title = item["Title"] == null ? string.Empty : item["Title"].ToString(); entity.CreateTime = Convert.ToDateTime(item["ApplyDateTime"]); entity.Content = item["Content"] == null ? string.Empty : item["Content"].ToString(); //加入集合 EGNewsEntityList.Add(entity); } } } catch { } // return EGNewsEntityList; }
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
2、通过UserToken来获取有权限的记录
//申明集合 DataTable table =null; #region//账号是否存在 if (web.AllUsers[UserAccount] != null) { //获取userToken SPUserToken userToken = web.AllUsers[UserAccount].UserToken; #region//***************************获取token,模拟当前账号登陆 using (SPSite owSite = new SPSite(siteUrl, userToken)) { #region //模拟当前登陆用户打开站点 using (SPWeb owWeb = owSite.OpenWeb(webUrl)) { try { #region//列表名称 string listName = EGNewsConfig.NewsListName; //如果是新闻 if (NewsType == EGNewsEntity.NewsType.News) { listName = EGNewsConfig.NewsListName; } //如果是公告 if (NewsType == EGNewsEntity.NewsType.Notice) { listName = EGNewsConfig.NoticeListName; } #endregion //如果列表名称 if (!string.IsNullOrEmpty(listName)) { #region//查询条件 string strWhere = "<OrderBy><FieldRef Name=\"ApplyDateTime\" Ascending=\"False\" /></OrderBy>"; //如果有关键字 if (!string.IsNullOrEmpty(Key)) { strWhere = "<Where><Eq><FieldRef Name=\"Title\" /><Value Type=\"Text\">" + Key + "</Value></Eq></Where>" + strWhere; } #endregion //申明dataTable table = MakeNamesTable(); #region//获取总的记录 SPQuery query = new SPQuery(); query.Query = strWhere; query.ViewFields = BuildViewFields(new string[]{"Title"}); totalCount = owWeb.Lists[listName].GetItems(query).Count; #endregion // int _totalcount = 0; //得到记录 SPListItemCollection itemCollection = GetPageList(owWeb, listName, PageSize, PageIndex, out _totalcount, strWhere, new string[] { "ID", "Title", "ApplyDateTime", "Content" }); #region//循环 foreach (SPListItem item in itemCollection) { //datatable增加一条记录 DataRow row = table.NewRow(); //ID号码 row["ID"] = item["ID"]; //赋值标题 row["Title"] = item["Title"]; //内容 row["Content"] = item["Content"]; //赋值创建时间 row["CreateTime"] = item["ApplyDateTime"]; //增加记录 table.Rows.Add(row); } #endregion } } catch(Exception ex) { errMsg = ex.Message; } } #endregion } #endregion } #endregion // return table;
.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }
相关文章推荐
- mysql 获取用户权限列表
- 根据当前登录域账号 获取AD用户姓名和所在OU目录
- 如何根据用户权限屏蔽或显示SAP的订单中的成本显示
- java如何获取window 客户端的登录用户名称
- 如何让sharepoint2010网站根据权限隐藏ribbon
- 如何在主题与皮肤中获取Portal登录用户信息
- 如何根据用户权限屏蔽或显示SAP的订单中的成本显示
- 域用户如何有远程桌面登录的权限?
- Windows下用户如何获取管理员权限
- 微信公众号开发接口列表大全之根据code获取用户基本信息
- Ubuntu 16.04 获取 root 用户权限并以 root权限登录
- 根据当前登录域账号 获取AD用户姓名和所在OU目录
- 如何让sharepoint2010网站根据权限隐藏ribbon
- 如何根据用户权限屏蔽或显示SAP的订单中的成本显示
- 牛腩购物12 :整合用户登录页 用到 asp.net 内置票据认证控件的使用(用户登录 用户权限) 用户控件ascx 设置/获取RadioButtonList 和RadioButton
- 不需要登录的app业务如何记录用户状态
- 使用SQL语句获取登录用户权限
- 如何在其他servlet中获取用户登录id
- 如何使用 Ntrights.exe 实用工具设置登录用户权限
- 获取用户权限列表(RSSB_GET_AUTH_FOR_USER)