"关于2007权限问题的测试报告"的测试报告

  关于2007权限问题的测试报告  来自Erucy的文章,老早就有项目涉及到这个问题,怎么个问题呢,简单描述下.
      自己写的ASP.NET app 放到_layouts路径下,想借用MOSS强大的功能,但又不能完全去控制她只好这么做了,在自己的APP中收集些信息,调用MOSS OBJECT去创建一个指定站点集下的自站点,用做一个工作平台,同时把选择的人员信息根据事先定义的组和权限加到这个刚刚创建的站点中去,也就是说,先创建SITE,再是GROUP,再是ROLES,再是?跟Erucy说的一样,摸了好多时候啊,那个继承关系必须得去掉,否则我的多个自己创建的站点都使用部分相同的组,那还要代码创建啊,干脆手动创建还省事,快,节能!
         web.Group[i].Add() 跟web.SiteGroup[i].Add()有啥区别,我要的是前面的,也就是说每个自己用代码创建的组其它的站点是看不到的,MOSS怎么搞的,用的时候提示我先做第二个,那是啥主意塞.不是我想要的,否则大家又在一个GROUP里面转,不好!有待调查,解决中了....

 1/// <summary>
 2        /// 根据指定的组新建用户
 3        /// </summary>
 4        /// <param name="web"></param>
 5        /// <param name="loginname">登录名:Domin\\Name形式</param>
 6        /// <param name="groupname">组名称</param>
 7        /// <param name="email">Email</param>
 8        /// <param name="cnname">中文名</param>
 9        /// <param name="notes">用户说明</param>
10        /// <returns>bool</returns>

11        public bool AddUserToGroup(SPWeb web, string loginname, string groupname, string email, string cnname, string notes)
12        {
13            try
14            {
15                if (!IsExistUser(web, loginname, groupname))
16                {
17                    web.SiteGroups[groupname].AddUser(loginname, email, cnname, notes);//新建用户
18                    return true;
19                }

20                return false;
21            }

22            catch (Exception)
23            {
24
25                throw;
26            }

27        }

28        /// <summary>
29        /// 组权限分配与定义(New)
30        /// </summary>
31        /// <param name="web"></param>
32        /// <param name="groupname"></param>
33        /// <param name="roles"></param>
34        /// <returns></returns>

35        public bool AddGroupToRoles(SPWeb web, string groupname, string[] roles)
36        {
37            try
38            {
39                string[] _roles = roles;
40                int rolemun = _roles.Length;
41
42                if (IsExistGroup(web, groupname))
43                {
44                    //改变站点继承权
45                    if (!web.HasUniqueRoleDefinitions)
46                    {
47                        web.RoleDefinitions.BreakInheritance(truetrue);//复制父站点角色定义并且保持权限
48                    }

49
50                    //站点继承权改变后重新设置状态
51                    web.AllowUnsafeUpdates = true;
52
53                    //组权限分配与定义(New)
54                    SPRoleDefinitionCollection roleDefinitions = web.RoleDefinitions;
55                    SPRoleAssignmentCollection roleAssignments = web.RoleAssignments;
56                    SPMember memCrossSiteGroup = web.SiteGroups[groupname];
57                    SPPrincipal myssp = (SPPrincipal)memCrossSiteGroup;
58                    SPRoleAssignment myroles = new SPRoleAssignment(myssp);
59                    SPRoleDefinitionBindingCollection roleDefBindings = myroles.RoleDefinitionBindings;
60                    if (rolemun > 0)
61                    {
62                        for (int i = 0; i < rolemun; i++)
63                        {
64                            roleDefBindings.Add(roleDefinitions[_roles[i]]);
65                        }

66                    }

67                    roleAssignments.Add(myroles);
68                    return true;
69                }

70                return false;
71            }

72            catch (Exception)
73            {
74
75                throw;
76            }

77        }

78
79


example而已了...
posted @ 2007-01-12 19:15  pccai  阅读(483)  评论(1编辑  收藏  举报