下午解决了一个问题
2003-10-24 22:06
267 查看
我们定制的基于SharePoint Service的站点中的用户管理,在增加新用户时包含了两个动作:
1、通过.Net中的DirectoryService在相应的OU(我们给每个客户分配了一个OU,以便于管理)中增加一个用户;
2、把第1步创建的用户增加到当前SharePoint站点的用户中
在做第一步时遇到一个问题,因为新增用户这个操作是给用户站点的管理员进行的,而用户站点管理员这个用户帐号在服务器上并不是属于Domain Admin的角色,所以是没有通过Active Directory新增用户帐号的权限的。
解决方法是利用角色模拟,在需要新增域中的用户时,模拟一个具有这个权限的用户进行模拟,完成这个操作后,再结束模拟。
WindowsIdentity类是用来描述Windows用户的类,它有一个方法Impersonate(),可以模拟某一用户,但是它需要一个IntPtr类型的表示要模拟的用户的Token Handle来作为参数,这时需要用到Win API来得到这个Handle,所以自己又写了一个类来封装这个操作。
示范代码:
// IdentityImpresonation是自定义的用来表示用户模拟的类,构造函数
// 参数分别为:要模拟的用户的用户名、密码、所在域(或机器名)
IdentityImpersonation imper = new IdentityImpersonation("tsg", "123456", "webreal");
imper.BeginImpersonation();
// 进行某些操作
imper.StopImpersonation();
这个类的源码:http://blog.joycode.com/kaneboy/posts/3801.aspx
1、通过.Net中的DirectoryService在相应的OU(我们给每个客户分配了一个OU,以便于管理)中增加一个用户;
2、把第1步创建的用户增加到当前SharePoint站点的用户中
在做第一步时遇到一个问题,因为新增用户这个操作是给用户站点的管理员进行的,而用户站点管理员这个用户帐号在服务器上并不是属于Domain Admin的角色,所以是没有通过Active Directory新增用户帐号的权限的。
解决方法是利用角色模拟,在需要新增域中的用户时,模拟一个具有这个权限的用户进行模拟,完成这个操作后,再结束模拟。
WindowsIdentity类是用来描述Windows用户的类,它有一个方法Impersonate(),可以模拟某一用户,但是它需要一个IntPtr类型的表示要模拟的用户的Token Handle来作为参数,这时需要用到Win API来得到这个Handle,所以自己又写了一个类来封装这个操作。
示范代码:
// IdentityImpresonation是自定义的用来表示用户模拟的类,构造函数
// 参数分别为:要模拟的用户的用户名、密码、所在域(或机器名)
IdentityImpersonation imper = new IdentityImpersonation("tsg", "123456", "webreal");
imper.BeginImpersonation();
// 进行某些操作
imper.StopImpersonation();
这个类的源码:http://blog.joycode.com/kaneboy/posts/3801.aspx
相关文章推荐
- 下午解决了一个问题
- 一个在.net下进行用户模拟的类
- 一个在.net下进行用户模拟的类
- Java编程思想(2nd)学习笔记(7)
- 从lex&yacc说到编译器(4.文法识别(一))
- Windows SDK编程之一 窗口示例程序
- 我的WebDesign之路--完结篇
- Java编程思想(2nd)学习笔记(6)
- 我的WebDesign之路--提高篇[2]
- Ant实战篇 (一)(2)
- Ant实战篇 (一)(3)
- 我的WebDesign之路--提高篇[1]
- 我的WebDesign之路--入门篇
- 移动设备的Web应用程序开发----(例子)
- 移动设备的Web应用程序开发----(介绍)
- Ant实战篇 (二)
- WBEM简介
- 在VC中所见即所得打印的简易实现
- Ant实战篇 (一)(4)
- 为什么C++编译器不能支持对模板的分离式编译