Аутентификация пользователя в пирамиде - PullRequest
41 голосов
/ 17 октября 2011

Я создаю веб-приложение, и мне нужно было выбрать между Django и Pyramid. Я решил пойти с Пирамидой.

Я понимаю, что Pyramid поставляется с собственной структурой аутентификации / авторизации, которая выглядит неплохо. Но я не видел нигде в Пирамиде, где определены пользователи / группы / разрешения. В Джанго все это бесплатно.

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

Определения Джанго этих вещей - почти все, что мне нужно.

Кто-нибудь может указать мне на то, что я могу использовать? Или мне нужно накатить свою?

1 Ответ

64 голосов
/ 17 октября 2011

Пирамида имеет гораздо более гибкую систему аутентификации. И да, если вы хотите что-то простое, например, концепцию пользователя / группы / полномочий Django, то гибкость может быть страшной.

Pyramid не имеет объекта "Пользователь", так как не делает никаких предположений о том, как вы храните свои данные или каким ORM вы пользуетесь, поэтому для вас нет чего-то вроде contrib.auth. Вам нужно будет самостоятельно хешировать / солить пароли, используя библиотеку, такую ​​как cryptacular или passlib, обе из которых есть в PYPI.

Что касается желаний пользователя / группы / разрешений в системе Pyramid, то это можно сделать довольно просто, если определить RootFactory с __acl__, который сопоставляет группы с разрешениями. Разрешения назначаются представлениям, поэтому обычно они довольно статичны. Если вы хотите, чтобы группы (которые Пирамида называет «принципалами») были динамичными, это также достижимо.

Я бы посоветовал взглянуть на учебник Pyramid wiki2 , а также демонстрацию перестрелки .

Существует также пара сторонних пакетов для помощи с авторизацией в Pyramid, если вы планируете использовать SQLAlchemy. apex - это более полное решение для стека, а ziggurat_foundations - это уровень более низкого уровня, чем SQLAlchemy, чтобы помочь вам настроить пользователей и группы для вашего приложения.

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

...