登陆方式:EndUserSessionAdapter、WebUserList、SessionsService+一登陆页面,USERNAME和PW存放在SQL SERVER 2000, 实现登陆验证机制的关键代码如下:procedure TeHRHome.WebUserListBeforeValidateUser(Strings: TStrings;
var UserID: Variant; var Handled: Boolean);
var
UserItem:TWebUserItem;
begin
//从basicinfo,enduser和usergroup表中联合查询出登录用户信息.
wdm.adqTmp.SQL.Clear;
wdm.adqTmp.SQL.Add('select b.Empid,b.name,e.password,e.groupid,u.grouptype ');
wdm.adqTmp.SQL.Add('from basicinfo b,enduser e,usergroup u ');
wdm.adqTmp.SQL.Add('where e.empid=b.empid and e.groupid=u.groupid and ');
wdm.adqTmp.SQL.Add('b.name='+#39+Strings.Values['UserName']+#39); //
wdm.adqTmp.SQL.Add(' and e.password='+#39+Strings.Values['Password']+#39);
wdm.adqTmp.Open;
if wdm.adqTmp.RecordCount > 0 then //验证通过
begin
UserID:=Strings.Values['UserName'];
{给实例UserItem的Username、Password、AccessRight赋值}
UserItem:=WebUserList.UserItems.Add as TWebUserItem;
UserItem.UserName:=Strings.Values['UserName'];
UserItem.Password:=Strings.Values['Password'];;
UserItem.AccessRights:=wdm.adqTmp.FieldValues['groupid']; FEmpId:=Strings.Values['UserName']; //Public变量
FGrpId:=wdm.adqTmp.FieldValues['groupid']; Session.Values['groupid']:=wdm.adqTmp.FieldValues['groupid'];
Session.Values['empid']:=wdm.adqTmp.FieldValues['empid'];
Session.Values['name']:=wdm.adqTmp.FieldValues['name'];
Session.Values['grp']:=wdm.adqTmp.FieldValues['grouptype']; Handled:=True; //让TWebUserList退出自动验证机制
end
else Handled:=False;
end;在调试器中运行时还算正常,但输入正确的USERNAME和PW后,不能自动跳转到目的页面,需要回到请求页面,重复一次前面的请求操作,才能到达目的页面;
类型转换为CGI后,在浏览器中运行,输入正确的USERNAME和PW后,已经看到页面出现“WELCOME 某某人”的字样,但一切换到其他页面,字就不见了(调试模式下是所有页面都出现的),请问原因所在??
一旦提出解决方案,即给100分!
(因权力不够,另开贴给100!)
var UserID: Variant; var Handled: Boolean);
var
UserItem:TWebUserItem;
begin
//从basicinfo,enduser和usergroup表中联合查询出登录用户信息.
wdm.adqTmp.SQL.Clear;
wdm.adqTmp.SQL.Add('select b.Empid,b.name,e.password,e.groupid,u.grouptype ');
wdm.adqTmp.SQL.Add('from basicinfo b,enduser e,usergroup u ');
wdm.adqTmp.SQL.Add('where e.empid=b.empid and e.groupid=u.groupid and ');
wdm.adqTmp.SQL.Add('b.name='+#39+Strings.Values['UserName']+#39); //
wdm.adqTmp.SQL.Add(' and e.password='+#39+Strings.Values['Password']+#39);
wdm.adqTmp.Open;
if wdm.adqTmp.RecordCount > 0 then //验证通过
begin
UserID:=Strings.Values['UserName'];
{给实例UserItem的Username、Password、AccessRight赋值}
UserItem:=WebUserList.UserItems.Add as TWebUserItem;
UserItem.UserName:=Strings.Values['UserName'];
UserItem.Password:=Strings.Values['Password'];;
UserItem.AccessRights:=wdm.adqTmp.FieldValues['groupid']; FEmpId:=Strings.Values['UserName']; //Public变量
FGrpId:=wdm.adqTmp.FieldValues['groupid']; Session.Values['groupid']:=wdm.adqTmp.FieldValues['groupid'];
Session.Values['empid']:=wdm.adqTmp.FieldValues['empid'];
Session.Values['name']:=wdm.adqTmp.FieldValues['name'];
Session.Values['grp']:=wdm.adqTmp.FieldValues['grouptype']; Handled:=True; //让TWebUserList退出自动验证机制
end
else Handled:=False;
end;在调试器中运行时还算正常,但输入正确的USERNAME和PW后,不能自动跳转到目的页面,需要回到请求页面,重复一次前面的请求操作,才能到达目的页面;
类型转换为CGI后,在浏览器中运行,输入正确的USERNAME和PW后,已经看到页面出现“WELCOME 某某人”的字样,但一切换到其他页面,字就不见了(调试模式下是所有页面都出现的),请问原因所在??
一旦提出解决方案,即给100分!
(因权力不够,另开贴给100!)
http://www.envanet.com
我的论坛,这样说是不是有拉条皮的嫌疑
不过我确实放了很多高程考试的资料在上面
好的话,给点分支持一下