|
Оглавление
|
Существует возможность интеграции Django с имеющейся системой аутентификации — с другим источником имён и паролей или методов аутентификации. Например, ваша компания может уже использовать LDAP, в котором хранятся имена и пароли для каждого сотрудника. Администратору сети и пользователям быстро надоест использовать разные логины для работы с LDAP и Django приложениями. Для решения этой задачи система аутентификации Django позволяет вам подключить внешние источники аутентификации. Вы можете переопределить схему аутентификации, изначально настроенную на использование базы данных, также вы можете использовать стандартную систему в тандеме с другими системами. С технической точки зрения, Django поддерживает список источников аутентификации. Когда кто-нибудь вызывает django.contrib.auth.authenticate() (описанный в главе «Сессии, пользователи и регистрация»), Django пытается проверить пользователя, используя все источники аутентификации. Django перебирает каждый источник, пока не найдёт совпавший.
Список источников аутентификации, предназначенных для
использования, определён в параметре
По умолчанию, параметр
('django.contrib.auth.backends.ModelBackend',)
Это простая схема аутентификации, которая проверяет пользователя по базе данных.
Порядок определения источников в параметре
Источник аутентификации — это обычный класс, который
имеет два метода:
Метод
Метод class MyBackend(object):
def authenticate(self, username=None, password=None):
# Check the username/password and return a User.
Но также может принимать элемент FIXME???, например: class MyBackend(object):
def authenticate(self, token=None):
# Check the token and return a User.
Другими словами, метод
Интерфейс администратора Django плотно объединён с собственным
объектом
Ниже представлен пример источника, который аутентифицирует
пользователей по переменным имени и пароля, определённым в
файле конфигурации, и создаёт объект
from django.conf import settings
from django.contrib.auth.models import User, check_password
class SettingsBackend(object):
"""
Authenticate against the settings ADMIN_LOGIN and ADMIN_PASSWORD.
Use the login name, and a hash of the password. For example:
ADMIN_LOGIN = 'admin'
ADMIN_PASSWORD = 'sha1$4e987$afbcf42e21bd417fb71db8c66b321e9fc33051de'
"""
def authenticate(self, username=None, password=None):
login_valid = (settings.ADMIN_LOGIN == username)
pwd_valid = check_password(password, settings.ADMIN_PASSWORD)
if login_valid and pwd_valid:
try:
user = User.objects.get(username=username)
except User.DoesNotExist:
# Create a new user. Note that we can set password
# to anything, because it won't be checked; the password
# from settings.py will.
user = User(username=username, password='get from settings.py')
user.is_staff = True
user.is_superuser = True
user.save()
return user
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
|
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
1049
49
130
71
Версия книги
1.0
2.0
Версия 2.0 в процессе перевода!
Мой луч
Многообразие света
Полезное
Актуальные вакансии,
Python работа
для python-разработчиков.
Скачать в формате
CHM от 2 сентябряЗаказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта. Чем чаще заказываете — тем больше перевожу. Русская группа
Ускорить процесс перевода!
R130494980980
Z425285133788 E112528079659 U327380922061 Книга помогла реализовать:
|
| © 2008-2009 Ruslan Popov @ gmail.com | Powered by Django 1.1 beta 1 SVN-11114 |