воскресенье, 17 апреля 2011 г.

Авторизация средствами Django


  В Django есть две таблицы. Это User и Group. Они располагаются в django.contrib.auth. На самом деле там есть еще таблицы, но для создания проверки прав доступа, необходимы эти две.
  В таблице Group, будут содержаться группы пользователей, которые имеют различные правадоступа. В данном случае это:

1. Оператор
2. Пользователь (Юзер)

  Таблица User используется для записи пользователей прошедших аутоинтификацию. Там содержится логин пользователя, который уникален и не повторяется.

  Для работы с этими таблицами необходимо их импортировать:

from django.contrib.auth.models import User, Group

  Далее, при первичной аутоидентификации, данные вносятся в таблици:
# выполняется в блоке try - except, если таблица была пустой и туда ещё не
# вносились записи

try:
    group = Group.objects.get(name='user')
except Group.DoesNotExist:
# вексение групп пользователей
    group = Group(name='operators')
    group.save()
    group = Group(name='users')
    group.save()
try:
    user = User.objects.get(username=username)
except User.DoesNotExist:
# создание записи пользователя
    user = User.objects.create_user(username, '', '')
# внесение в группу номер 2, т.е. 'user'
    user.groups.add(2)


  Таблица User, содержит в себе ссылку на таблицу Group, через встроенную 'подтаблицу'
groups.
  Главное корректно заполнить таблицу Group, а далее, добавление прав доступа осуществляется коммандой add('нмер поля записи в таблице Group, соответсвующий определенной группе пользователей')

  Процедура авторизации имеет следующий вид:

def avtorr(user):
# осуществляется проверка принадлежности копределенной группе пользователей
    return True if user.groups.filter(name='user') else False


  Далее, в тексте программы, вставляется проверка, Она вставляется в начале процедуры, которая обрабатывает html страницы, в которых разграничены права доступа.

if autor(request.user)==False:
    return HttpResponseRedirect(reverse("имя процедуры, обрабатывающей случай когда нет прав доступа к данной странице"))


2 комментария:

  1. ..сомнительная полезность блога, товарищ.. вот честно хотел найти что-то полезное, но отталкивает как отсутствие форматировани кода (для python это критично), так и множественные орфографиеческие и грамматические ошибки. Аутентификация, Авторизация.. пропущенные пробелы в словах.. Окончательно убило
    def avtorr(user):
    ...
    и потом его использование
    if autor(request.user)==...
    это блин даже не откомпилируется.
    Куда вы торопитесь? К чему вообще делать это, если это делается так наспех..?

    ОтветитьУдалить
  2. А мне понравилось словечко "аутоинтификация" XD

    ОтветитьУдалить