主题:  双登陆系统(还没有test)

aze_5d

职务:普通成员
等级:1
金币:0.0
发贴:51
注册:2001/11/17 10:19:20
#12002/3/2 18:03:25
就是有两个登陆系统分别从不同的数据库验证
然后各自有一些受保护的叶面
但我想这好像不太可能实现
因为UD在作受保护页时,没有地方制定受哪儿保护,那个数据库保护
因此很可能的后果就是
只要从一个登陆系统成功了
就可以进入两类受保护页中
不用权限,有没有可能实现这个想法



I''MAD

职务:普通成员
等级:8
金币:11.0
发贴:9502
注册:2001/9/16 20:00:53
#22002/3/2 21:34:48
用UD在制作用户登陆的时候不是有个分极权限吗?那里面可以选数据库里定义好权限的字段,你两个数据库里权限字段不要相同就行了。



5D荣誉斑竹

职务:普通成员
等级:2
金币:10.0
发贴:710
注册:2001/10/24 18:34:42
#32002/3/2 23:03:58
你说的是不是例如:一个是个人用户,另一个是企业用户,它们的表不同,但必须在同一个登录口登录,然后各自登到自己的页面?

如果是这样的话,我前两天已经做出来了,如果你需要的话,我把代码帖出来



5D公害

职务:普通成员
等级:9
金币:10.3
发贴:36272
注册:2002/1/13 9:52:57
#42002/3/2 23:42:15
guiTar小田在上个帖子中说
引用:
你说的是不是例如:一个是个人用户,另一个是企业用户,它们的表不同,但必须在同一个登录口登录,然后各自登到自己的页面?

如果是这样的话,我前两天已经做出来了,如果你需要的话,我把代码帖出来


但必须在同一个登录口登录,然后各自登到自己的页面?
我也同意这样的说法,就是两个FORM



5D荣誉斑竹

职务:普通成员
等级:3
金币:10.0
发贴:1480
注册:2002/1/15 11:01:54
#52002/3/3 1:21:49
每个用户加个权限字段。
每个页面加个SESSION判断权限。
这都做不到,ASP也拉倒了。MS也好倒闭了!



5D荣誉斑竹

职务:普通成员
等级:2
金币:10.0
发贴:710
注册:2001/10/24 18:34:42
#62002/3/3 16:11:20
不是两个Form,也不是用权限字段或session,而是登录检验用户名和密码时在两个表里检验。

首先,必须在Form上加一个radiobutton(单选框),根据radiobutton的值来判断用哪个sql语句
例如:有两个radiobutton,一个值为man(判断在login表中验证口令),另一个为work(判断在T_User表中验证口令),找到UD产生的登录代码中“MM_rsUser.Source = MM_rsUser.Source.......”在前面加上判断语句,
if Request.Form("radiobutton")="man" then
MM_rsUser.Source = MM_rsUser.Source & " FROM login WHERE (login.user='" & MM_valUsername &"' AND login.psw='" & CStr(Request.Form("texPwd"))& "') "
else
MM_rsUser.Source = MM_rsUser.Source & " FROM T_User WHERE (T_User.uID='" & MM_valUsername &"' AND T_User.pwd='" & CStr(Request.Form("texPwd"))& "')"
end if
然后找的最下面的这句“Response.Redirect(MM_redirectLoginSuccess)”这表示成功后跳转的哪个页面,在前面也像上面加上判断
if Request.Form("radiobutton")="man" then
Response.Redirect(MM_redirectLoginSuccess)
    else
     Response.Redirect("work.asp") //另一个页面
    end if

具体的代码如下:
<%@LANGUAGE="VBSCRIPT"%>

<%
' *** Validate request to log in to this site.
MM_LoginAction = Request.ServerVariables("URL")
If Request.QueryString<>"" Then MM_LoginAction = MM_LoginAction + "?" + Request.QueryString
MM_valUsername=CStr(Request.Form("texUID"))
If MM_valUsername <> "" Then
MM_fldUserAuthorization=""
MM_redirectLoginSuccess="ok.asp"
MM_redirectLoginFailed="fail.asp"
MM_flag="ADODB.Recordset"
set MM_rsUser = Server.CreateObject(MM_flag)
MM_rsUser.ActiveConnection = MM_Test_STRING
MM_rsUser.Source = "SELECT *"
If MM_fldUserAuthorization <> "" Then MM_rsUser.Source = MM_rsUser.Source & "," & MM_fldUserAuthorization
if Request.Form("radiobutton")="man" then
MM_rsUser.Source = MM_rsUser.Source & " FROM login WHERE (login.user='" & MM_valUsername &"' AND login.psw='" & CStr(Request.Form("texPwd"))& "') "
else
MM_rsUser.Source = MM_rsUser.Source & " FROM T_User WHERE (T_User.uID='" & MM_valUsername &"' AND T_User.pwd='" & CStr(Request.Form("texPwd"))& "')"
end if
MM_rsUser.CursorType = 0
MM_rsUser.CursorLocation = 2
MM_rsUser.LockType = 3
MM_rsUser.Open
If Not MM_rsUser.EOF Or Not MM_rsUser.BOF Then
' username and password match - this is a valid user
Session("MM_Username") = MM_valUsername
If (MM_fldUserAuthorization <> "") Then
Session("MM_UserAuthorization") = CStr(MM_rsUser.Fields.Item(MM_fldUserAuthorization).value)
Else
Session("MM_UserAuthorization") = ""
End If
if CStr(Request.QueryString("accessdenied")) <> "" And false Then
MM_redirectLoginSuccess = Request.QueryString("accessdenied")
End If
MM_rsUser.Close
    if Request.Form("radiobutton")="man" then
Response.Redirect(MM_redirectLoginSuccess)
    else
     Response.Redirect("work.asp")
    end if
End If
MM_rsUser.Close
Response.Redirect(MM_redirectLoginFailed)
End If
%>


Untitled Document






















Username:




Password:







Man

Work









并且我试了一下,UD的登录代码和表单可以不在同一个页面,你只要把登录的代码copy到另一个页,并把原来的表单的Action指向这个页就好了,并且如果用"ok"登录也进不去了,只是显示错误页,挺有趣的。

编辑历史:[这消息被Hmily编辑过(编辑时间2002-03-03 16:21:10)]


aze_5d

职务:普通成员
等级:1
金币:0.0
发贴:51
注册:2001/11/17 10:19:20
#72002/3/5 13:26:44
说过不用权限的!



5D公害

职务:普通成员
等级:9
金币:10.3
发贴:36272
注册:2002/1/13 9:52:57
#82002/3/5 14:11:17
完全可以用两个FORM的,就不用这么麻烦了



aze_5d

职务:普通成员
等级:1
金币:0.0
发贴:51
注册:2001/11/17 10:19:20
#92002/3/5 18:31:25
可能我说的不太清楚
大家只是说了登陆页和进入页,而没有说受保护页(当然进入页也是受保护页,但有点特殊)
详细一点如下:

有1,2,3这三个页,1是log in页,2是log in后进入的页面,3是受保护的页,用来验证的数据库为num.mdb

还有a,b,c这三个页,a为log in页,b是log in后进入的页面,c是受保护的页,用来验证的数据库为leter.mdb

然后将这6个文件放在一块,如果从1登陆成功后,我觉得他完全可以通过输入c的地址来进入c页,同样从a登陆成功后,可以进入3页
因为ud只是检验session是不是为,而不是检验必须在哪个数据库里
不要权限

编辑历史:[这消息被aze编辑过(编辑时间2002-03-05 18:34:49)]


5D荣誉斑竹

职务:普通成员
等级:2
金币:10.0
发贴:710
注册:2001/10/24 18:34:42
#102002/3/6 2:53:45
不用权限??

其实权限也就是检查session("权限")的值,在UD的登录代码中定义的变量是 Session("MM_UserAuthorization"),它把你在数据库中设置的“权限”字段的值取出来,你试试用我的方法做一遍,判断语句会根据你的选择,分别从两个数据库中把数据取出来,赋给session("MM_Username")和 Session("MM_UserAuthorization"),你登录后,调用这两个变量就知道了,有了这个,就可以用来做保护页了,自己试试吧



5D荣誉斑竹

职务:普通成员
等级:3
金币:10.0
发贴:1480
注册:2002/1/15 11:01:54
#112002/3/6 9:18:36
不用权限可以。
但不是2个FORM,一个登陆口不可能用2个FORM的。
需要动态改变FORM 的 ACTION

很有用的一个技巧哦!



I''MAD

职务:普通成员
等级:8
金币:11.0
发贴:9502
注册:2001/9/16 20:00:53
#122002/3/6 10:14:12
YES,没错。用IF判断用户名,当是超级用户的时候提交向哪个页面,如不是就向另一个页面提交。