Автентикация
Представете си, че имаме формуляр с две полета – Име и Парола. Получаваме заявката от формуляра и проверяваме в базата данни за съществуването на съответния потребител. Ако съществува, записваме в обекта $Session ключ usr със стойност името на потребителя. При следващите заявки към страниците от приложението просто проверяваме дали в обекта $Session съществува ключа usr. Ако ли не – препращаме нахалника към входната страница. Нищо друго не е необходимо. В нашия конкретен случай даже не се налага да правим заявка към базата, а просто ползваме обекта $Application, за да проверим. Следва кодът.
CODE1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <!-- checkusr.inc -->
<%
unless(exists $Session->{usr}){
foreach(@{$Application->{usrs}}){
if($Request->Params("usr") eq $_->[0]
&& $Request->Params("pswd")eq $_->[1]
){
$Session->{usr}=$Request->Params("usr");
last;
}
}
unless(exists $Session->{usr}){
$Session->Abandon();
$Response->Redirect("$HOME/index.html");
}
}
%> |
Този файл ще го включим във всяка активна страница на нашето приложение. Той ще се компилира само веднъж като отделен файл, тъй като зададохме директивата 'PerlSetVar DynamicIncludes 1'. така няма да се налага сървърът да го компилира като част от страниците, в които се извиква. Има и нещо ново – променливата $HOME. Това е още една глобална променлива, която дефинирах в global.asa. Така ще мога да пренеса приложението на всеки сървър и ще трябва само да променя стойността й. Текущата стойност също се генерира динамично, но е по-дълга за писане:
CODE1
| $HOME="http://".$ENV{HTTP_HOST}."/"; |
Добавете този ред в global.asa, като не забравяте да добавите и новата променлива $HOME в списъка с глобалните променливи.
Толкова за автентикацията.