模拟WSS Site中的Guest组
在WSS站点中,如果我们手动往一个List,例如一个文档库中添加一个用户,如果原来这个用户不在这个WSS站点的用户列表中,那么这个新的用户会被自动添加到Guest这个组中。
但如果我们使用代码来实现,事情就没有这么简单了:使用代码来往一个List中添加用户的时候,这个用户必须是一个Site Group中的用户,而如果这是一个新的用户,那么WSS站点不会自动把这个用户添加到Guest组中。但Guest组是不能够改动的,使用代码是不能把一个用户添加进去的。所以这里出现了一个死循环……
一个解决方法就是:新建一个组,来模拟Guest组,然后把这个用户先加到这个组中。为了实现新建的组和Guest组一样,没有任何权限,还需要删除这个组的权限:
SPWeb myweb = new SPSite("https://server").OpenWeb("sites/sitename");
myweb.AllowUnsafeUpdates = true;
SPRoleCollection siteGroups = myweb.Roles;
siteGroups.Add("test", "This is the group used for guest", SPRights.ViewPages);
SPRole test = myweb.Roles["test"];
test.PermissionMask = test.PermissionMask ^ SPRights.ViewPages;
test.AddUser("domain/user", "user@test.com", "User", "test");
SPMember myuser = test.Users.GetByEmail("user@test.com ");
SPList mylist = myweb.Lists["Shared Documents"];
mylist.Permissions.Add(myuser, SPRights.ViewListItems);
对于Portal,则不会有这个问题,因为Portal上根本没有Guest组。
Comments
- Anonymous
October 06, 2004
强人! - Anonymous
October 06, 2004
帅哥,不要捣浆糊。