|
Table of contents
|
Существует возможность интеграции 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
|
Found misprint?
Select it with the mouse and hit Enter
-
Processed:
33
1
199
25
The full repository of DjangoBook translation you can get on GitHub.
We appreciate your patches!
We are glad to hear your questions, comments or suggestions!
(Open in new tab)
Users number: 601
Русская группа
Ускорить процесс перевода!
ЯМ:41001223475816
|
| © 2008-2012 Ruslan Popov @ gmail.com | Powered by Django 1.2.5 |