Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 19, 2010 11:38:50

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

bottle: Пользователь и пароль

Всем доброго!
Возник вопрос как в bottle сделать авторизацию пользователей. Необходимо, чтобы пользователь с одной учетной записью видел одни страницы, а пользователь с другой учеткой совсем другие.



Python 2.7.3
Pyside 1.1.2

Офлайн

#2 Апрель 19, 2010 12:20:11

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

bottle: Пользователь и пароль

http://bottle.paws.de/
Bottle does not include (yet):
HTML-Helper, Session, Identification and Authentication: Do it yourself
Делайте авторизацию на сессии или куках, при регистрации храните в БД какой-то признак, по какому отдавать пользователю ту или другую страницу.



Офлайн

#3 Апрель 19, 2010 12:21:10

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Офлайн

#4 Апрель 19, 2010 12:29:57

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

bottle: Пользователь и пароль

Спасибо, а какой движок базы данных лучше использовать для этих целей?



Python 2.7.3
Pyside 1.1.2

Офлайн

#5 Апрель 19, 2010 12:56:13

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

bottle: Пользователь и пароль

Cover Story
Спасибо, а какой движок базы данных лучше использовать для этих целей?
для авторизации - любой :), и вообще можно без БД. в файлах хранить пользователей

Офлайн

#6 Апрель 19, 2010 16:00:25

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

bottle: Пользователь и пароль

Спасибо за пример o7412369815963. Стало более менее ясно. Но как теперь этих юзеров пустить по разным страницам? У меня 3 юзера одному необходимо поставить один набор страниц, другому другой, а третьему все, он будет типа админ. Ссылаясь на пример, указанный выше, признаком разделения по юзерам будет их пароль?



Python 2.7.3
Pyside 1.1.2

Офлайн

#7 Апрель 19, 2010 19:52:51

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

bottle: Пользователь и пароль

к страницам можно прикрутить поле, где будет список пользователей у которых есть доступ, и при открытии страницы проверять входждение текущего пользователя в этот список.
можно 2 поля, одно для прав чтения, другое для прав записи - так вроде в вакоВики сделано.

Офлайн

#8 Апрель 19, 2010 19:56:37

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

bottle: Пользователь и пароль

Cover Story
Ссылаясь на пример, указанный выше, признаком разделения по юзерам будет их пароль?
нет, признаком разделения будет имя пользователя, пароль не храниться

Офлайн

#9 Май 4, 2010 07:24:35

Truewar
От:
Зарегистрирован: 2010-05-01
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

bottle: Пользователь и пароль

Несколько месяцев назад я заморочился над системой разделения прав для 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

Надеюсь, объяснил понятно. Если кто заинтересуется, могу показать рабочий пример.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version