• 控制视图页面的访问权限


    问题:

    控制视图页面的访问权限,设置只有指定组的用户可以访问。

    解决方案:

    写一个webpart,添加到需要控制权限的页面,如何当前用户不属于指定的组,则不允许用户访问当前页面。

    代码:
    //----------------------------------------------------------------
    //CodeArt
    //
    //文件描述:
    //
    //创 建 人: jianyi
    //创建日期: 2008-7-11
    //
    //修订记录: 
    //

    //----------------------------------------------------------------
    using System;
    using System.Collections.Generic;
    using System.Collections;
    using System.ComponentModel;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;

    using Microsoft.SharePoint;
    using System.Collections.Specialized;
    using Microsoft.SharePoint.Utilities; 

    namespace ShareOffice.WebParts
    {

        
    public class RightControlPart : WebPart
        
    {
            
    private string _Groups = "";
            [WebBrowsable]
            [WebDescription(
    "有权访问的组,用;间隔")]
            [Personalizable(PersonalizationScope.Shared)]
            
    public string Groups
            
    {
                
    get return _Groups; }
                
    set { _Groups = value; }
            }


            
    protected override void OnLoad(EventArgs e)
            
    {
                
    base.OnLoad(e);

                
    this.Title = "";

                
    base.ChromeType = PartChromeType.None;

                SPUser user 
    = SPContext.Current.Web.CurrentUser;

                
    //管理员可以访问
                if (user.IsSiteAdmin && String.IsNullOrEmpty(this.Groups))
                    
    return;

                
    //检测用户是否属于配置的组
                string[] arr = this._Groups.Split(';');

                StringCollection userGroups 
    = new StringCollection();
                
    foreach (SPGroup g in user.Groups)
                
    {
                    userGroups.Add(g.Name.ToLower());
                }


                
    foreachstring g in arr )
                
    {
                    
    if (userGroups.Contains(g.ToLower()))
                        
    return;
                }


                SPUtility.TransferToErrorPage(
    "您没有权限访问此视图.");
            }

        }

    }


    这种方法的一个适用场景:
    一个列表做两个视图:
    视图1(默认视图): 采用某个用户字段=[本人做过滤],普通用户可以查看到跟自己有关的数据。
    视图2:显示所有记录。在视图2页面上放置这个权限控制webpart,设置只有某个组可以访问。




  • 相关阅读:
    2015年5月1日 转载--各种变量在内存中的分布
    2015年4月30日 计算两个日期天数,写的代码
    2015年4月29日 dayofweek
    2015年4月28日
    2015年4月28日----高大上的数组,进制准换,最多是35进制
    2015年4月27日---C语言:输出特殊图案,请在c环境中运行,看一看,Very Beautiful!
    2015年4月27日
    《C++ Primer》学习笔记:迭代器介绍
    《C++ Primer》学习笔记:3.3.3其他vector操作
    《C++ Primer》学习笔记:向vector对象添加元素蕴含的编程假定
  • 原文地址:https://www.cnblogs.com/jianyi0115/p/1241210.html
Copyright © 2020-2023  润新知