Интеграция Django с Acegi - PullRequest
       6

Интеграция Django с Acegi

1 голос
/ 04 сентября 2010

У меня есть приложение Java, которое использует Acegi для аутентификации / авторизации. Наш новый веб-интерфейс желательно писать на Django. Я хотел бы, чтобы Django поддерживал пользователей - регистрация и т. Д. Django либо делился, либо обновлял данные аутентификации Acegi, чтобы старое приложение все еще работало, и пользователям не приходилось использовать два набора учетных данных (возможно, даже совместно использовать cookie-файлы аутентификации). Мне было интересно, если кто-то уже имел дело с подобной проблемой, и если да, какой подход был выбран.

Спасибо

1 Ответ

0 голосов
/ 04 сентября 2010

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

Мне не особо нравится интерфейс администратора Django, хотя я использую Form и ModelForm вне его. Я фактически внедрил свою собственную систему аутентификации - все, что вам нужно, это функции, которые позволяют вам входить / выходить и т. Д., И интерфейс с этими данными. Это (пользователи / группы и т. Д.) Не обязательно должно быть представлено как модель Django, хотя я сделал это для простоты. Ничто не мешает вам подключиться к другому ORM или написать свой собственный для acegi. В качестве альтернативы, если написать собственный слой достаточно просто, сделайте это.

Я бы порекомендовал подключиться к контекстным процессорам для Django и промежуточного программного обеспечения Django, а также к тому, чтобы библиотека работали просто потому, что это заставит повторно использовать бриз и будет действовать аналогично существующей инфраструктуре аутентификации. Вот пример обработчика контекста, который я использую, чтобы позволить мне писать {{ username }} в моем шаблоне без необходимости извлекать его из каждого объекта запроса в каждом методе представления:

def Authentication(request):
    if AuthenticationCheck(sess=request.session, timeofaction=datetime.datetime.now(), ipaddress=request.META['REMOTE_ADDR']) == True:
        return dict(username=request.session["username"])
    else:
        return dict(username='')

Также, Документация по промежуточному программному обеспечению Django

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...