Форум сайта python.su
Всем доброго!
Возник вопрос как в bottle сделать авторизацию пользователей. Необходимо, чтобы пользователь с одной учетной записью видел одни страницы, а пользователь с другой учеткой совсем другие.
Офлайн
http://bottle.paws.de/Делайте авторизацию на сессии или куках, при регистрации храните в БД какой-то признак, по какому отдавать пользователю ту или другую страницу.
Bottle does not include (yet):
HTML-Helper, Session, Identification and Authentication: Do it yourself
Офлайн
Офлайн
Спасибо, а какой движок базы данных лучше использовать для этих целей?
Офлайн
Cover Storyдля авторизации - любой :), и вообще можно без БД. в файлах хранить пользователей
Спасибо, а какой движок базы данных лучше использовать для этих целей?
Офлайн
Спасибо за пример o7412369815963. Стало более менее ясно. Но как теперь этих юзеров пустить по разным страницам? У меня 3 юзера одному необходимо поставить один набор страниц, другому другой, а третьему все, он будет типа админ. Ссылаясь на пример, указанный выше, признаком разделения по юзерам будет их пароль?
Офлайн
к страницам можно прикрутить поле, где будет список пользователей у которых есть доступ, и при открытии страницы проверять входждение текущего пользователя в этот список.
можно 2 поля, одно для прав чтения, другое для прав записи - так вроде в вакоВики сделано.
Офлайн
Cover Storyнет, признаком разделения будет имя пользователя, пароль не храниться
Ссылаясь на пример, указанный выше, признаком разделения по юзерам будет их пароль?
Офлайн
Несколько месяцев назад я заморочился над системой разделения прав для Web. Успешно реализовал на PHP. Работает достаточно быстро и гибко. Система следующая:
1. Условно делим контент на классы. В случае сайта это могут быть классы страниц, разделов в каталоге, товаров в каталоге, в отдельный класс вынесены функции модулей. Экземпляры классов - объекты. Почувствуйте разницу: класс - понятие, обобщающее все товары, а объект - конкретный товар или страница.
2. Каждый объект имеет пользователя и группу владельца.
3. Для классов создаются правила доступа, которые могут быть переопределены для конкретного объекта.
4. Правило доступа - это строка, которая выглядит следующим образом: 0:5,10:7,12:6,x:4
Запятыми разделены конкретные права для конкретных групп пользователей. Перед двоеточием идентификатор группы, после - десятиричное представление двоичной маски прав доступа. Исключения: 0:5 и x:4 - “0” “обозначает” владельца, “x” - права для всех остальных. Собственно любое правило обязательно должно содержать права для владельца и всех остальных, а вот для групп - по желанию. Кол-во групп в правиле условно неограничено (права хранятся в текстовых полях базы, которые не бесконечны)
5. Теперь о двоичных масках. Приём самый распространенный. Раскрою вышеуказанное правило: 0:101,10:111,12:110,x100
В примере я ограничился тремя битами. На практике их бывает больше. Далее всё зависит о фантазии потребностей. К примеру 100 - права на чтение, 010 - редактирование, 001 - удаление. С комбинациями понятно: 101 - чтение и удаление, 111 - полный доступ и т.д.
6. В самой программе в виде массива хранятся смещения: ACCESS=2,ACCESS=1,ACCESS=0.
7. Обработка прав доступа осуществляется с помощью битовых операций. К примеру 1 << ACCESS даст нам 100 - битовую маску прав на чтение. Строку с правилом из БД нужно поделить на части. Я тоже в массив записываю. Оставляем только нужные права: если пользователь не состоит в каких- группах, то и нечего для них ничего считать. С помощью битового умножения, проверяем, есть ли права, т.е. если пользователь состоит в группе с идентификатором 10, проверка будет такой:
7 & (1 << ACCESS)
Выражение вернёт TRUE. После этого можно, к примеру перезаписать переменную ACCESS значением TRUE и использовать в пограмме
if ACCESS
# ACTIONS FOR AUTHORIZED USERS
Надеюсь, объяснил понятно. Если кто заинтересуется, могу показать рабочий пример.
Офлайн