2010-09-03 2 views
1

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

Благодаря

ответ

0

Просто помните, что вы делаете с 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 Middleware Documentation

+0

Спасибо. Я был на 100% Java раньше и особенно наслаждался использованием стека JSF/Spring/Hibernate. У нас есть некоторая устаревшая система, которая использует этот стек. В настоящее время у нас есть требования к созданию новой системы с большим количеством интерфейсов веб-интерфейса/веб-сервиса. Требования не так ясны и будут меняться. Я считаю, что стеки Django более продуктивны, когда дело доходит до веб-разработки, чем при использовании технологий Java. Рабочий процесс с веб-дизайнерами также проще. – Tomas