А как лучше реализовать авторизацию? Нужны схемы. @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 4 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Заголовок сообщения: А как лучше реализовать авторизацию? Нужны схемы.
Сообщение Добавлено: 25 Ноябрь 2007, 05:33:44 
Перед мной скоро встанет такая проблема:
мне надо сделать авторизацию на админ сайте для е-магазина.

Где разные пользователи будут иметь разные права.
Пользователи (поставщики, продавцы и покупатели) должны по разному: видеть, исправлять и удалять данные о заказах.

Задача тривиальна, но я в первый раз сталкиваюсь с этим.
Что бы не изобретать лисопед - посоветуйте какие нибуть схемы реализации, UML диаграммы или что почитать.

Все должно быть сделано в архитектуре MVC.
Знаю что: Прокси-паттерн, полиморфизм тут к месту.
Также планирую использовать хранимые процедуры в MySQL:
- доступ к базе (по возможности) только через процедуры
- наделить юзеров правами запускать ту или иную процедуру

Но как это все уложить в одну общую картину - для меня это вопрос.

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 25 Ноябрь 2007, 16:57:29 
Увы, управление доступом -- это не один какой-то конкретный паттерн.
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 21 Декабрь 2007, 04:36:05 
Crazy, все верно
это гораздо больше чем паттерн в его классическом понимании (из книги "Банды Четырех").

Но все же инфы на эту тему довольно много.
Я искал в гугле по этим ключевым словам:
security model
security pattern
policy pattern
authorization model
authorization pattern


Я еще не разбирался, но этот линк выглядит многообещающим:
http://www.securitypatterns.org/patterns.html

http://en.wikipedia.org/wiki/Computer_security_model

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 21 Декабрь 2007, 05:45:03 
Кстати, встроенные процедуры в MySQL для управления доступом - рулезная вещь!!

Допустим в PHP у нас есть группы пользователей: админы, продавцы, покупатели.
Аналогично на MySQL сервере создаем юзеров: admin, seller, buyer (через них мы будем делать соединение к БД).

На странице "Годовой отчет" каждому нужно получить разную информацию.
Но PHP вызывает один тот же SQL запрос для всех! :up: Допустим: CALL get_report();

Наша процедура get_report() внутри проверяет через какого юзера сделано соединение к БД и выдает нужные данные.
см. SELECT USER();

Так как каждый захочет фильтровать/сортировать данные как ему захочется, процедура должна принять много параметров:
CALL get_report(здесь, очень, много, параметров)

Как этого можно избежать:
Процедура не выдает RESULTSET, а создает временную таблицу, см. CREATE TEMPORARY TABLE.
Пользователь может выбрать данные из временной таблицы.

Хитрость:
Что бы наделить пользователя привилегиями на чтение из временной таблицы:
1. сначала создаем обыкновенную пустую таблицу с таким же названием.
2. наделяем привилегиями
3. удаляем таблицу

Временные таблицы содаются отдельно для каждого соединения с БД.
Так что потери данных (при возникновении двух одинаковых таблиц) быть не должно.

------------------
Увы, в MySQL приходится иметь дело с временными таблицами (в глобальном пространстве), т. к. язык не предусматривает передачу данных другими средствами (например массивом).

Я проблем тут не вижу:
- писать в SQL процедурах всю бизнес-логику нет смысла и даже вредно.
- ИМХО временные таблицы помощнее массивов (учитывая язык запросов).

Так что для своих целей PL/SQL очень даже.

_________________
Тот, кто задает вопрос, глупец в течение пяти минут, тот, кто его не задает, глупец всю свою жизнь. (Китайская поговорка)
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 4 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100