VB中怎么集成NT域验证?
前提,这是个局域网应用。
效果:
我想实现应用弹出登录对话框,要求用户输入域用户帐号及密码,
然后应用向主域服务器提交验证请求。
请问有没有现成的组件或者其他方法?
如果需要自己写,能否详细讲解思路?
在ASP那边问了好久都没有解决,希望VB这村里能帮上我,我的等
级最高只能给出35分,我都拿出来,请大家一定帮我!
问题点数:35、回复次数:7Top
1 楼RickeyLv(RickeyLv)回复于 2001-01-16 10:01:00 得分 0
使用api函数
Public Declare Function LogonUser Lib "kernel32" Alias "LogonUserA" (ByVal lpszUsername As String, ByVal lpszDomain As String, ByVal lpszPassword As String, ByVal dwLogonType As Long, ByVal dwLogonProvider As Long, phToken As Long) As Long
你可以把它封装到一个应用组件中Top
2 楼czh918(czh)回复于 2001-01-16 10:11:00 得分 0
很简单:
只要将你的asp或html放在nt的一个ntfs目录上,给该目录指定相应的权限就可
这样,当别人用ie访问时就会先弹出一个验证框,只有通过验证才能继续。
如果可能,多给点分,我正缺Top
3 楼cocoboy79(ithink79.spaces.live.com)回复于 2001-01-16 10:13:00 得分 0
用ADSI 见www.microsoft.com/adsiTop
4 楼geolano(3PJS)回复于 2001-01-16 18:30:00 得分 0
真的要谢谢RickeyLv,我明天可以回公司测试你说的API,
成功的话这35分全是你的。Top
5 楼geolano(3PJS)回复于 2001-01-16 19:24:00 得分 0
to cocoboy79
刚刚又看了ADSI2.5的help,其实以前我一直尝试的方法就是
在ASP中用ADSI验证NT用户,无非是象下面这样的东西。
IADsUser pUser;
BSTR bstrName;
HRESULT hr;
hr = ADsGetObject(L"WinNT://MyDomain/Users/John",
IID_IADsUser,
(void**) &pUser);
当然,ADSI可以做很多事,包括管理NT用户,但是我至今
没发现ADSI中提供验证用户的方法。我的意思是ADSI中提
供一个方法,参数是用户名和密码以及验证域,然后它返
回哪怕是个布而值,来告诉我验证是否通过也行。
但是,我没有找到 :(
你知道吗?
说实话,从实现角度来讲,我更倾向使用ADSI,但我真的知之甚少。
肯请帮助!Top
6 楼cocoboy79(ithink79.spaces.live.com)回复于 2001-01-17 23:08:00 得分 35
www.microsoft.com/adsi 有一个ADSI的白皮书下载,其中有一个LOGIN的例子。
我改了改如下:如果LOGIN失败了,当然就可以证明密码和用户名不对。但我还是不知道如何分别判断是密码错了,还是用户名不对,反正登陆不了,肯定有一个不对。
另外用ADSI做完后,在客户方安装注错时,ACTIVEDS.TLB不能注册,MS说好像是和MDAC有冲突
见http://support.microsoft.com/support/kb/articles/Q275/9/17.ASP?LN=EN-US&SD=g
不知有没有人解决这个问题!!!!!! microsoft.public.active.directory.interfaces
上有人问过,但也没见有好办法。。。。真麻烦:(
Private Sub Login_Click()
Dim dso As IADsOpenDSObject
Dim domain As IADsDomain
On Error GoTo failed
Set dso = GetObject("WinNT:")
Set domain = dso.OpenDSObject("WinNT://MyDomain", "Administrator", "", ADS_SECURE_AUTHENTICATION)
MsgBox ("login successful")
Exit Sub
failed:
MsgBox ("failed")
End Sub
Top
7 楼cocoboy79(ithink79.spaces.live.com)回复于 2001-01-17 23:16:00 得分 0
另外这里有一个用WINNT API登陆的例子,可以下载程序。
其实验证用户录入的用户名和密码,可以用那个用户名和密码去登陆到服务器,登陆不上就不对了。
http://www.vbsquare.com/articles/ntvb/Top




