我们知道SharePoint是允许匿名访问的,首先需要在Web Application中设置一下,Central Administration -> Manage web applications -> authentication providers,进入设置页面勾选Enable anonymous access:
然后在站点设置匿名访问的权限,site settings -> site permissions -> anonymous access:
最后在列表的权限设置页面设置匿名访问权限,这里需要注意的是,文档库和列表对匿名用户的权限设置是不同的,new item, edit item 和delete item只能在列表中赋予,在文档库中,是不能赋予匿名用户这些权限的,如图,在文档库的匿名访问设置中,前三个选项是disabled:
在列表中是可以勾选的:
然后列表就可以接受匿名用户的访问了。
对于匿名访问,在编程的过程中,需要考虑以下几个问题:
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,虽然也可以给匿名用户提升权限,但是不建议这样做。