Setting password on a web page via ASP
Ставим пароль на ASP страницу
Тэг <Include> позволяет подключить к ASP-файлу внешние
файлы. Используя это свойство можно задавать пароль и право доступа на любую страницу
выполненную как файл ASP. Грамотный пользователь может возразить:
"При работе в NT с файловой системой NTFS права назначаются на уровне
OS и чего, мол, огород городить". Все это правильно, но при наличии
сколько-нибудь большого количества
пользователей с динамически изменяемыми правами
администрирование системы превращается в
головную боль. А если мы желаем дать пользователю
возможность самому назначать права, или
предоставляем ему возможность овладевания (ovner)
страницей при создании
виртуального "дома", или хотим
персонализировать его информацию … вопросов
больше, чем ответов. Использовать
специализированный софт дорого, до и не нужно,
можно решить эту проблему используя
исключительно возможности ASP.
Итак, приступим. Для хранения имен, паролей и прав
(групп) нам понадобится база данных. В отличии от текстового файла база
данных имеет массу положительных качеств, я
остановлюсь только на одном – доступе. Нет
необходимости "расшаривать" базу данных и
назначать права на доступ к ней, делать ее
видимой пользователям извне, прописывать полные
или виртуальные пути. Достаточно создать
системный ресурс ODBC, и все ОК,
файлы с данными пользователям не видны, однако
данные становятся доступными! Создадим новую
базу данных и назовем её user.mdb.
Я традиционно использую MSACCESS
(целостность данных!). Теперь таблицы с данными.
Поля таблицы:
Поле |
Тип
данных |
Кол-во
символов |
Индекс |
Уникальность |
Значение
по умолчанию |
DateTime |
Date |
- |
Нет |
Нет |
Date () |
Group |
Num |
Int |
Да |
Нет |
1 |
Name |
Text |
25 |
Да |
Да |
- |
Pas |
Text |
25 |
Да |
Да |
- |
Access |
Boolean |
Yes/No |
Нет |
Нет |
Yes |
Имя таблицы "Account".
Информацию о группах будем хранить в таблице "MyGroup".
Поле |
Тип
данных |
Кол-во
символов |
Индекс |
Уникальность |
Значение
по умолчанию |
IdGroup |
Num |
Int |
Да |
Да |
- |
NameGroup |
Text |
25 |
Да |
Да |
- |
Для обеспечения целостности и обновления
данных необходимо связать таблицы по полям MyGroup.IdGroup
-- Account.Group в соотношении "один
ко многим", это позволит легко
администрировать группы пользователей.
Внешне это будет выглядеть так:
Заполним таблицы минимальным количеством данных.
DateTime |
Group |
Name |
Pas |
Access |
04.08.98 |
3 |
Alex |
hello |
Yes |
04.08.98 |
2 |
Mikl |
hiScat |
Yes |
04.08.98 |
1 |
Udjin |
123##456?? |
Yes |
IdGroup |
NameGroup |
1 |
Administrator |
2 |
Webmaster |
3 |
User |
Закроем базу данных и создадим системный
ресурс ODBC с именем "user". Имя и пароль на доступ к ресурсу ODBC,
соответственно, укажем: IUSER – password. Установите флажок READ-ONLY. Теперь дело за подключаемым файлом с
ASP кодом.
Что должен делать этот код:
Открывать сессию для пользователя
При открытии сессии выводить на экран
удаленного пользователя форму авторизации
Опрашивать базу с аккаунтами пользователей на
предмет совпадения Имени и Пароля
В ходе текущей сессии пропускать пользователя
на защищаемые страницы и не надоедать
пользователю
Удалять имя и пароль пользователя из памяти по
окончании сессии.
Приводимый ниже код отвечает этим требованиям.
Код подключаемого файла.
Как использовать.
Скопируйте код в любой текстовый редактор не умеющий форматировать текст (Notepad)
и сохраните файл как "login.inc" .
Разместите файл в
каталоге с защищаемыми страницами и не забудьте
назначить премиссию RX на защищаемые файлы.
Включите ПЕРЕД HTML кодом
защищаемой страницы следующий код:
<%@ LANGUAGE="VBSCRIPT" %>
<!--#include virtual="login.inc"-->
При использовании данного способа
аутентификации используются Coocies! Не забудьте предупредить
пользователей о необходимости их использования.
Так, как код ASP выполняется на
сервере, нет необходимости беспокоиться о
совместимости браузеров и это мне
представляется весьма большим плюсом данного
способа!
При создании статьи использовался материал с сайта www.oceantek.com
Вопросы и рекомендации будут с благодарностью приняты по адресу webmaster@tarantul.infosys.ru
|