Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение прав доступа пользователей, в веб-движке 
:(
    Опции темы
Mal Hack
Дата 12.6.2005, 02:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



Работаю с PHP & MySQL.
Задача. Надо организовать хранение прав доступа пользователей. Причем.
1. Надо делать разделение на сабдомены (т.е. связываем с ID сабдоменов в дочерней таблице)
2. Надо сделать разделение на модули (аналогично).
3. Сами права для каждого модуля могут быть разными.
4. Кол-во данных (всех) не имеет ограничений.

пока я себе представляю это так:
ID_Subdomain | ID_Modul | Group | CONF_Param | CONF_Value

Есть ли какие-ть предложения. В принципе и такой вариант работоспособный, но вдруг есть более рациональное решение.

Да, еще хочу отметить. Уже в самой программе будет сформирован массив с ключами из CONF_Param и соответствующих им значений из CONF_Value.

PM ICQ   Вверх
Kesh
Дата 12.6.2005, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 2
Всего: 54



A если взять отсюда
Код
 describe mysql.tables_priv 




--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 12.6.2005, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



Kesh не понял что ты имеешь ввиду smile
PM ICQ   Вверх
Kesh
Дата 12.6.2005, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 2
Всего: 54



Почему бы не взять модель хранения прав доступа из самого mySQL и модифицировать ее под свои нужды...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 12.6.2005, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



А можно об этом чуть подробнее smile
PM ICQ   Вверх
Kesh
Дата 12.6.2005, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 2
Всего: 54



Ну смотри... Твоя задача - организовать хранение прав досупа пользователей... Если задаться вопросом, где можно взять схожую модель, удовлетворяющую твоим запросам, то первым делом взгляд должен упасть на модель хранения прав доступа в самой базе с которой ты работаешь... Ведь mysql где-то и как-то хранит информацию по правам доступа пользователей... А это и есть таблицы users, tables_priv и columns_priv... Вот оттуда я бы и начал копать... smile


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 12.6.2005, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



Фишка в том, что в 4:
Цитата
CREATE TABLE `tables_priv` (
  `Host` char(60) binary NOT NULL default '',
  `Db` char(64) binary NOT NULL default '',
  `User` char(16) binary NOT NULL default '',
  `Table_name` char(64) binary NOT NULL default '',
  `Grantor` char(77) NOT NULL default '',
  `Timestamp` timestamp(14) NOT NULL,
  `Table_priv` set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter') NOT NULL default '',
  `Column_priv` set('Select','Insert','Update','References') NOT NULL default '',
  PRIMARY KEY  (`Host`,`Db`,`User`,`Table_name`),
  KEY `Grantor` (`Grantor`)
) TYPE=MyISAM COMMENT='Table privileges';

Привилегии статичны и уже занесены в БД, а у меня нет такого ограничения.
PM ICQ   Вверх
Kesh
Дата 12.6.2005, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 2
Всего: 54



Так кто мешает изменить set на то, что тебе удобно по принципу CHMOD... smile


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
LSD
Дата 12.6.2005, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 24
Всего: 538



Цитата(Mal @ 12.6.2005, 03:38)
Задача. Надо организовать хранение прав доступа пользователей. Причем.
1. Надо делать разделение на сабдомены (т.е. связываем с ID сабдоменов в дочерней таблице)
2. Надо сделать разделение на модули (аналогично).
3. Сами права для каждого модуля могут быть разными.

Что есть сабдомены и модули, какую роль они выполняют, как связанны между собой?
Права на что ты хочешь предоставлять, на отдельные строки и поля таблиц, или на некие твои собственные структуры данных?
Цитата(Mal @ 12.6.2005, 03:38)
4. Кол-во данных (всех) не имеет ограничений.

О каких данных идет речь?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Mal Hack
Дата 12.6.2005, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



Цитата(Kesh @ 12.6.2005, 19:56)
Так кто мешает изменить set на то, что тебе удобно по принципу CHMOD... smile


В процессе работы параметры могут меняться и добавляться, поэтому SET не пойдет.

Цитата(LSD @ 12.6.2005, 21:18)
Что есть сабдомены и модули, какую роль они выполняют, как связанны между собой?

Движок работает не прочто на example.com, но и на *.example.com. Т.е. в первую очередь различаются настройки для разных сабдоменов. Аналогично и по модулям, т.е. надо различать USE_DEF для модуля download и для модуля news.

Цитата(LSD @ 12.6.2005, 21:18)
Права на что ты хочешь предоставлять, на отдельные строки и поля таблиц, или на некие твои собственные структуры данных?

Не совсем понял что ты имеешь ввиду.

Цитата(LSD @ 12.6.2005, 21:18)
О каких данных идет речь?

О параметрах конфигурации.
PM ICQ   Вверх
Kesh
Дата 12.6.2005, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 2
Всего: 54



Цитата(Mal @ 12.6.2005, 21:09)
Цитата (Kesh @ 12.6.2005, 19:56)
Так кто мешает изменить set на то, что тебе удобно по принципу CHMOD... smile


В процессе работы параметры могут меняться и добавляться, поэтому SET не пойдет.

Так я и не говорю про SET...
Можешь хоть varchar завести... и ранить + или - на соответствующих правам местах... Хотя красивее было бы работать с integer и его разрядами...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 12.6.2005, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



Цитата(Kesh @ 12.6.2005, 22:17)
Можешь хоть varchar завести... и ранить + или - на соответствующих правам местах... Хотя красивее было бы работать с integer и его разрядами...

Даже если считать по битам, как CHMOD, то надо иметь статичное кол-во этох параметров. У меня же оно динамическое.
PM ICQ   Вверх
LSD
Дата 12.6.2005, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 24
Всего: 538



Цитата(Mal @ 12.6.2005, 22:09)
Не совсем понял что ты имеешь ввиду.

Вопрос снимается.


Я бы сделал так:
Код
sub_domains
---+---------------+-------------
id | parent_domain | domain_name


dom_permissions
---+------------+--------+-----------+------------
id | sub_domain | module | perm_name | perm_value

Таким макаром мы получаем разрешения на любое количество доменов, с возможностью иерархического наследования. Т.е. определили разрешения для домена верхнего уровня, а у дочерних доменов их только переопределяем, при необходимости.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Mal Hack
Дата 12.6.2005, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: нет
Всего: 261



LSD
Цитата(Mal @ 12.6.2005, 03:38)
пока я себе представляю это так:
ID_Subdomain | ID_Modul | Group | CONF_Param | CONF_Value

Это-то я предусмотрел smile
Причем дочернее не дочернее тут не нужно.
Меня больше интересовал вопрос, как лучше оргазизоват хранение:
Group | CONF_Param | CONF_Value
PM ICQ   Вверх
LSD
Дата 12.6.2005, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 24
Всего: 538



Цитата(Mal @ 12.6.2005, 23:03)
Меня больше интересовал вопрос, как лучше оргазизоват хранение:
Group | CONF_Param | CONF_Value

По смыслу задачи разрешение, назначается паре: домен-модуль, так что тут все ОК. Разрешение представляет из себя пару: ключ-значение. Если разрешение на пару домен-модуль, может быть только одно то текущая структура нормально подходит, если же их может быть больше, то надо выносить Group | CONF_Param | CONF_Value, в отдельную таблицу и делать ссылку на базовую.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1305 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.