在SharePoint中处理匿名访问(Anonymous access)

        我们知道SharePoint是允许匿名访问的,首先需要在Web Application中设置一下,Central Administration -> Manage web applications -> authentication providers,进入设置页面勾选Enable anonymous access:

在SharePoint中处理匿名访问(Anonymous access)_第1张图片

        然后在站点设置匿名访问的权限,site settings -> site permissions -> anonymous access:

在SharePoint中处理匿名访问(Anonymous access)_第2张图片

        最后在列表的权限设置页面设置匿名访问权限,这里需要注意的是,文档库和列表对匿名用户的权限设置是不同的,new item, edit item 和delete item只能在列表中赋予,在文档库中,是不能赋予匿名用户这些权限的,如图,在文档库的匿名访问设置中,前三个选项是disabled:


列表中是可以勾选的:

在SharePoint中处理匿名访问(Anonymous access)_第3张图片

然后列表就可以接受匿名用户的访问了。


对于匿名访问,在编程的过程中,需要考虑以下几个问题:

1,如何判断当前用户是匿名用户?匿名用户的一个特点就是,SPContext.Current.Web.CurrentUser是null,因此可以使用下面的方法判断当前的用户是不是匿名 用户:

bool IsAnonymousUser = SPContext.Current.Web.CurrentUser == null;

2,如果需要添加自定义的页面,并且这个页面继承了“UnsecuredLayoutsPageBase”类,那么,需要重写这个类的AllowAnonymousAccess属性,这个属性默认返回false,是禁止匿名访问的,如果不重写这个AllowAnonymousAccess属性,在匿名用户访问你的页面的时候,会弹出登录框。

    public class MyPage : UnsecuredLayoutsPageBase
    {
        ... ...

        protected override bool AllowAnonymousAccess
        {
            get
            {
                return true;
            }
        }
        ... ...
     }

3,判断匿名用户的权限可以使用DoesUserHavePermissions方法,这个方法是支持匿名用户的:

bool canAnonymousUserAddItemOnList = list.DoesUserHavePermissions(SPBasePermissions.AddListItems); //判断匿名用户在list上的权限
bool canAnonymousUserAddItemOnWeb = web.DoesUserHavePermissions(SPBasePermissions.AddListItems) //判断匿名用户在web上的权限
       可以使用 AnonymousPermMask64来获取匿名用户拥有的所有原子权限:

web.AnonymousPermMask64 //web,可以使用这个属性为匿名用户添加权限
list.AnonymousPermMask64 //list,可以使用这个属性为匿名用户添加权限,但是文档库中即使添加了add,edit,delete item的权限,也不起作用。

4,虽然也可以给匿名用户提升权限,但是不建议这样做。


你可能感兴趣的:(匿名,SharePoint)