Moss 站点提升权限(二)

本文介绍了解决SharePoint中权限检查失败的问题。通过正确使用SPSecurity.RunWithElevatedPrivileges方法和实例化SPSite及SPWeb对象,实现了以网站集最高权限用户的身份验证当前用户的权限组成员资格。

今天在使用 SPSecurity.RunWithElevatedPrivileges(delegate(){});   来提升权限时,通过当前登录人的帐号判断当前登录人是否在某一个权限组里面,出现“拒绝访问”

一开始的代码如下:

                SPSecurity.RunWithElevatedPrivileges(delegate()

                {

                    using (SPWeb site = SPContext.Current.Web)

                    {

                        LogHandler1("提升开始");

                        SPUser user = site.CurrentUser;

                        SPGroup group = site.SiteGroups["办公用品管理"];

                        string adCode = user.LoginName;

                        LogHandler1("当前登录人:" + adCode);

 

                        foreach (SPUser sUser in group.Users)

                        {

                            if (adCode.ToLower() == sUser.ToString().ToLower())

                            {

                                TextBox1.Text = "这个人有权限!";

                            }

                        }

                    }

                });

修改了好多次代码都没有解决。后来查了一下资料,因为获取一个权限组只有网站集团管理员才可以取到。在使用SPSecurity.RunWithElevatedPrivileges权限提升的代码里头,必须实例化SPSite,SPWeb对象,而不能使用Microsoft.SharePoint.SPContext.Current属性获得对象,因为那些对象是以当前用户的安全上下文创建的。后来又修改了代码,代码如下:

            bool bRet = false;

 

            try

            {

                LogHandler1("开始");

 

                SPSite spSite = SPContext.Current.Site;

                SPWeb spWeb = SPContext.Current.Web;

                SPUser user = spWeb.CurrentUser;

                SPSecurity.RunWithElevatedPrivileges(delegate()

                {

                    using (SPSite spSiteNew = new SPSite(spSite.ID))

                    {

                        using (SPWeb spWebNew = spSiteNew.OpenWeb(spWeb.ID))

                        {

                            SPGroup group = spWebNew.SiteGroups["办公用品管理"];

                            string adCode = user.LoginName;

                            LogHandler1("当前登录人:" + adCode);

 

                            foreach (SPUser sUser in group.Users)

                            {

                                if (adCode.ToLower() == sUser.ToString().ToLower())

                                {

                                    bRet = true;

                                }

                            }

                        }

                    }

                });

            }

            catch (Exception ex)

            {

                LogHandler(ex);

            }

 

            return bRet;

 

说明:上面的代码是以网站集最高权限用户来执行,所以可以进行创建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值