我在WebUserList的onBeforeValidateUser事件中写如下代码:
procedure THome.WebUserListBeforeValidateUser(Strings: TStrings;
var UserID: Variant; var Handled: Boolean);
var
UserNo,pswd:string;
begin
UserNo:=Strings.Values['UserName'];
pswd:=Strings.Values['PassWord'];
with Dm.ADOQuery1 do
begin
close;
with sql do
begin
clear;
add('select * from UserMem');
add('Where Useno='+UserNo);
add('and pwd='+pswd);
open;
end;
end;
if DM.ADOQuery1.RecordCount>0 then
begin
UserID:=UserNo;//验证通过
Handled:=true;
Session.Values['UserName']:=UserNo;
end
else
Handled:=false;
end;
在LoginFormaAdapter的onlogin事件中写如下代码:
procedure TLogin.LoginFormAdapter1Login(Sender: TObject; UserID: Variant);
var
UserNo,pswd:string;
begin
UserNo:=Request.ContentFields.Values['UserName'];
pswd:=Request.ContentFields.Values['PassWord'];
if UserNo='' then
begin
Session.UpdateResponse(Response);
Response.SendRedirect('/ShowQx.dll/ShowMsg?Msg=请输入用户号');
exit;
end;
if pswd='' then
begin
Session.UpdateResponse(Response);
Response.SendRedirect('/ShowQx.dll/ShowMsg?Msg=请输入密码');
exit;
end;
with Dm.ADOQuery1 do
begin
close;
with sql do
begin
clear;
add('select * from UserMem');
add('Where Useno='+UserNo);
add('and pwd='+pswd);
open;
end;
end;
if DM.ADOQuery1.RecordCount>0 then
begin
Session.UpdateResponse(Response);
Response.SendRedirect('/ShowQx.dll/ShowMsg?Msg=登陆成功');
exit;
end;
if Dm.ADOQuery1.RecordCount=0 then
begin
session.UpdateResponse(Response);
Response.SendRedirect('/ShowQx.dll/ShowMsg?Msg=用户名或密码错误');
exit;
end;
end;
但这里的问题是若用不正确的UserName和PassWord登陆时,却出现错误信息“Unkown UserName”,为何?(我已经对错误的登陆做了相应处理啊)
还有问题就是Strings.Values['UserName'],Strings.Values['PassWord']的意义?
procedure THome.WebUserListBeforeValidateUser(Strings: TStrings;
var UserID: Variant; var Handled: Boolean);
var
UserNo,pswd:string;
begin
UserNo:=Strings.Values['UserName'];
pswd:=Strings.Values['PassWord'];
with Dm.ADOQuery1 do
begin
close;
with sql do
begin
clear;
add('select * from UserMem');
add('Where Useno='+UserNo);
add('and pwd='+pswd);
open;
end;
end;
if DM.ADOQuery1.RecordCount>0 then
begin
UserID:=UserNo;//验证通过
Handled:=true;
Session.Values['UserName']:=UserNo;
end
else
Handled:=false;
end;
在LoginFormaAdapter的onlogin事件中写如下代码:
procedure TLogin.LoginFormAdapter1Login(Sender: TObject; UserID: Variant);
var
UserNo,pswd:string;
begin
UserNo:=Request.ContentFields.Values['UserName'];
pswd:=Request.ContentFields.Values['PassWord'];
if UserNo='' then
begin
Session.UpdateResponse(Response);
Response.SendRedirect('/ShowQx.dll/ShowMsg?Msg=请输入用户号');
exit;
end;
if pswd='' then
begin
Session.UpdateResponse(Response);
Response.SendRedirect('/ShowQx.dll/ShowMsg?Msg=请输入密码');
exit;
end;
with Dm.ADOQuery1 do
begin
close;
with sql do
begin
clear;
add('select * from UserMem');
add('Where Useno='+UserNo);
add('and pwd='+pswd);
open;
end;
end;
if DM.ADOQuery1.RecordCount>0 then
begin
Session.UpdateResponse(Response);
Response.SendRedirect('/ShowQx.dll/ShowMsg?Msg=登陆成功');
exit;
end;
if Dm.ADOQuery1.RecordCount=0 then
begin
session.UpdateResponse(Response);
Response.SendRedirect('/ShowQx.dll/ShowMsg?Msg=用户名或密码错误');
exit;
end;
end;
但这里的问题是若用不正确的UserName和PassWord登陆时,却出现错误信息“Unkown UserName”,为何?(我已经对错误的登陆做了相应处理啊)
还有问题就是Strings.Values['UserName'],Strings.Values['PassWord']的意义?
改用:DispatchPageName 或 RedirectToPageName
2。有没有加入 SessionService、 EndUserSessionAdapter、WebUserList 组件?
3。Strings.Values['UserName']
如果 Strings 中有一行 “UserName=MyName”
则 Strings.Values['UserName'] 的值为 'MyName'
这是为何呢?