Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Распределение прав доступа
Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010
Помог: 1 раз(а)
Добрый день, подсел на Ваш форум, почитал много интересного) И вот появился вопрос:
Нужно организовать разделение прав у нескольких пользователей.
А теперь подробней что да как:
Допустим у нас есть 3 пользователя:
Admin - можeт все
User_1 - может смотреть
User_2 - может смотреть, редактировать, удалять.
User_3 - ему доступ запрещен
Естественно админ может проставить кому что можно.
Каким образом лучше и правильней все это сделать? Буду благодарен за любую помощь, отвечу на дополнительные вопросы)
З.Ы.
Поиском пользовался, но то, что я нашел - не очень понравилось.
lodar
Отправлено: 30 Марта, 2010 - 15:49:35
Новичок
Покинул форум
Сообщений всего: 20
Дата рег-ции: Авг. 2009
Помог: 0 раз(а)
Jlblcblu пишет:
Добрый день, подсел на Ваш форум, почитал много интересного) И вот появился вопрос:
Нужно организовать разделение прав у нескольких пользователей.
А теперь подробней что да как:
Допустим у нас есть 3 пользователя:
Admin - можeт все
User_1 - может смотреть
User_2 - может смотреть, редактировать, удалять.
User_3 - ему доступ запрещен
Естественно админ может проставить кому что можно.
Каким образом лучше и правильней все это сделать? Буду благодарен за любую помощь, отвечу на дополнительные вопросы)
З.Ы.
Поиском пользовался, но то, что я нашел - не очень понравилось.
Лучше всего создать группы пользователей. Таким образом на будущее возможно расширять права не одного, а целой группы. Если использовать БД, то каждой группе назначай уникальный ид и соответственно проверку через ид на права.
Тоха
Отправлено: 30 Марта, 2010 - 15:50:02
Гость
Покинул форум
Сообщений всего: 114
Дата рег-ции: Март 2010 Откуда: Орел, Россия
Помог: 0 раз(а)
всё зависит от того, какой стиль вы используете при программировании. Ну и от контента и направленности сайта конечно тоже. Иногда удобнее хранить настройки в конфигурационном файле, но чаще в отдельной таблице БД.
Stierus
Отправлено: 30 Марта, 2010 - 15:54:10
Рекордсмен по количеству сообщений за 7 дней
Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008 Откуда: Москваль
Помог: 52 раз(а)
1. Права назначать не пользователям, а группам - обязательно (пользователей относить к этим группам, даже если пока в 1 группе всего 1 пользователь)
2. Если у вас все делается в ООП-стиле - то в классе можете сделать конфиг-массив, в котором указать, какую функцию какие группы могут выполнять, ну а в самих функциях делать проверку этих прав (так же поставить права по умолчанию)
Jlblcblu
Отправлено: 30 Марта, 2010 - 15:56:08
Новичок
Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010
Помог: 1 раз(а)
lodar пишет:
Лучше всего создать группы пользователей. Таким образом на будущее возможно расширять права не одного, а целой группы. Если использовать БД, то каждой группе назначай уникальный ид и соответственно проверку через ид на права.
Хм.. С группами хорошая идея. Действительно логичней будет.
Использую MySQL.
И вот с этими проверками на права никак не могу понять что да как)
Допустим логинится кто-то, получает $_SESSION['access']... и тут хранить некие показатели для каждой страницы? если их20-30.. можно и запутаться что куда..
Вот тут приведен пример, но он как-то не очень: _http://ru-sait.ru/publ/18-1-0-262_
Тоха
Отправлено: 30 Марта, 2010 - 16:00:44
Гость
Покинул форум
Сообщений всего: 114
Дата рег-ции: Март 2010 Откуда: Орел, Россия
Помог: 0 раз(а)
Jlblcblu пишет:
И вот с этими проверками на права никак не могу понять что да как)
Допустим логинится кто-то, получает $_SESSION['access']... и тут хранить некие показатели для каждой страницы? если их20-30.. можно и запутаться что куда..
Вот тут приведен пример, но он как-то не очень: _http://ru-sait.ru/publ/18-1-0-262_
Покинул форум
Сообщений всего: 78
Дата рег-ции: Март 2010
Помог: 0 раз(а)
Создать столбец TYNINT (1) // Уровень доступа, при авторизации в сессию.
----- Нет вокруг ничего кроме бесконечного журчания опкодов вселенной...
JustUserR
Отправлено: 30 Марта, 2010 - 16:16:57
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Jlblcblu Можно конечно использовать группы пользователей с набором прав для них и для каждого пользователя в таблице БД держать такую запись - а вот можно и сделать побитовое сложение прав - например 1=читать 2=добавлять 4=редактировать 8=удалять и тд В таком случае сумма этих прав дает определенное число которое явно отражает права конкретного пользователя
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Jlblcblu
Отправлено: 30 Марта, 2010 - 16:45:57
Новичок
Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010
Помог: 1 раз(а)
Сделал группы. Но опять все не столь радужно. Попробую сформулировать чуть иначе и показать на примере конкретно в чем нужна помощь.
Имеем:
Something.php c такой таблицей
+--+----------+----+------+
| 1 | String_1 |edit |delete|
| 2 | String_2 |edit |delete|
+--+----------+----+------+
Add_something.php c некоторой информацией.
Таблица MySQL - "Access":
+-id-+-group_name-+-access-+
| 1 | Admins |77 |
| 2 | Users |12 |
| 3 | Guests |00 |
+-----+----------------+---------+
И что у нас выходит.
Мы авторизумся и, допустим, получаем права на КАЖДУЮ страницу.
Т.е. после авторизации в $_session['access']="77" за админа, "12" за user`а и т.д.
Дальше мы берем циферку под каждую страничку $_session['access'][0] (something.php) и $_session['access'][1] (dd_something.php).
0 - ничего нельзя
1 - разрешено удаление
2 - разрешено редактирование
3 - разрешено редактирование и удаление
4 - разрешен просмотр
5 - разрешены просмотр и удаление
6 - разрешены просмотр и редактирование
7 - разрешено все
И все 30 страничек изрезать такими вот проверками) поперепутав какая по счету циферка относится к какой странице в $_SESSION['access']="12312312356124375612473";
Вот как то так я себе это видел) может глупо) что скажете на это?
JustUserR
Отправлено: 30 Марта, 2010 - 17:33:18
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Jlblcblu пишет:
Вот как то так я себе это видел) может глупо) что скажете на это?
Это по сути расширение linux-овского разграничения прав ползователя и группы и всех остальных на большее число параметров - кроме того если у вас будет проверяющая функция которая смотрит разршено ли то или иное действие для пользователя то проблем с позицией цифры не будет
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
jfr
Отправлено: 30 Марта, 2010 - 20:44:08
Посетитель
Покинул форум
Сообщений всего: 332
Дата рег-ции: Март 2010 Откуда: Таджикистан, Худжанд
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Jlblcblu
Отправлено: 31 Марта, 2010 - 14:30:30
Новичок
Покинул форум
Сообщений всего: 36
Дата рег-ции: Март 2010
Помог: 1 раз(а)
Спасибо за ссылки. Там много всего. Просматриваю.
JustUserR
Отправлено: 31 Марта, 2010 - 16:31:11
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Toshak
Отправлено: 01 Ноября, 2010 - 20:14:14
Новичок
Покинул форум
Сообщений всего: 9
Дата рег-ции: Окт. 2010
Помог: 0 раз(а)
Вот моя мысль....Но не сомвсем для пользователей....Просто разограничить права по модулям....
Допустим изменять/удалять/редактировать информ в модуле сможет только ограниченная группа....
Просто есть таблица moduls в ней названия модулей и т.д. ,а так же access,в ней через какойто опредленый символ ,условный, допустим буду записывать те группы которые могут монипулировать этим модулем,допустим "admin|moder|group2" ,далее я извлекаю эту инфу,разбиваю в массив допустим $mod_access , далее... У пользователя есть свойство group ,в нем храниться к какой группе пользователей относиться юзер. При заходе в админку , я сравниваю группу пользователя и доступность его монипулировать модулем,и вывожу только те модули к которым у него есть доступ.
____
Пока тока думки,но думаю америку не открыл.Пока что реализовать не пробывал.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.