2009-09-29 2 views
6

Я недавно начал изучать/использовать django; Я пытаюсь найти способ иметь две отдельные системы аутентификации для администраторов и пользователей. Вместо того, чтобы создавать совершенно новую систему auth, я бы хотел использовать встроенные функции django (т. Е. Управление сеансом, @login_required decorator и т. Д.).Отдельная система аутентификации администратора/пользователя в Django

В частности, я хочу иметь две отдельные таблицы входа - один для администраторов, один для пользователей. Таблица входа администратора должна быть таблицей по умолчанию, которую django генерирует со своими полями по умолчанию (например, id, username, email, is_staff, etc.). С другой стороны, таблица пользователя, я хочу иметь только только 5 полей - id, email, password, first_name, last_name. Кроме того, я хочу использовать встроенное управление сеансом django для обеих таблиц входа и декоратора @login_required для своих соответствующих представлений. Наконец, я хочу две отдельные и различные формы входа для администраторов и пользователей.

У кого-нибудь есть предложения о том, как я могу достичь своей цели или знать какие-либо статьи/примеры, которые могут помочь мне?

+0

Достаточно ли разрешений для большинства задач? Администраторы - это только пользователи с соответствующими разрешениями. И там даже 'user.is_staff' /' user.is_superuser' там, если вы не хотите, чтобы точно настроенные разрешения. – drdaeman

+0

Кажется, что мой вопрос был неясным; Я отредактировал свой вопрос, добавив более подробную информацию и подробности, надеюсь, сделав ее более ясной. Спасибо за понимание/помощь. – Dan

ответ

1

Если я правильно понимаю ваш вопрос (и, возможно, нет), я думаю, вы спрашиваете, как создать отдельную форму входа для пользователей, не являющихся администраторами, при использовании стандартных механизмов аутентификации Django, модели User, и т. д. Это поддерживается изначально Django через представления в django.contrib.auth.views.

Вы хотите начать с django.contrib.auth.views.login. Добавить строку в файл привязки, как так:

(r'^/login/$', 'django.contrib.auth.views.login', {'template_name': 'myapp/login.html'}) 

login общего вид принимает параметр template_name, который является путем к шаблону пользовательского входа (есть общий один вы можете использовать, а также, обеспечивается django.contrib.auth) ,

Полная документация по login, logout, password_change и другие общие виды доступны в документе Django Authentication Docs.

0

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

Если вы пытаетесь сделать страницу входа в систему и страницу входа в систему администратора отдельной, просто используйте встроенную фреймворку, как описано в документах, чтобы создать страницу входа «пользователь» и оставить один админ один , Если вы обеспокоены тем, что пользователи каким-то образом начнут редактировать материалы для входа в админ, не так, они не будут, если вы не позволите им.

1

Возможно, вы можете написать один или несколько пользовательских систем аутентификации. Это документировано here. Например, я написал собственный сервер для аутентификации на сервере LDAP.

Смежные вопросы