Евгений Кондратов
Тэг <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 кодом.
Что должен делать этот код:
- Открывать сессию для пользователя
- При открытии сессии выводить на экран
удаленного пользователя форму авторизации
- Опрашивать базу с аккаунтами пользователей на
предмет совпадения Имени и Пароля
- В ходе текущей сессии пропускать пользователя
на защищаемые страницы и не надоедать
пользователю
- Удалять имя и пароль пользователя из памяти по
окончании сессии.
Литература по ASP
|