zelsky
@zelsky

CustomUser model auth не работает?

del deldeldeldeldeldeldeldeldeldelde ldeldeldeldeldeldeldeldeldeldeldeldeldeldeldeldeldel
  • Вопрос задан
  • 258 просмотров
Решения вопроса 1
werevolff
@werevolff
def login(request):

    defaults = {
        'authentication_form': CustomAuthForm,
        'template_name': 'accounts/login.html',
        }
    if request.user.is_anonymous():
        return auth_login(request, **defaults)
    elif request.user.is_owner():
        return redirect('/asdasdasd')

    return auth_login(request, **defaults)


Читаем код:

1. Функция логина
2. Если пользователь анонимный - залогинить.
3. Если пользователь не анонимен и метод is_owner() возвращает True - редиректнуть.
4. Во всех остальных случаях - залогинить.

Соответственно, проверка is_owner() происходит только в том случае, если пользователь авторизован и пытается зайти на страницу login. Теперь об ошибках:

1. Непонятно зачем дёргается стандартная ф-ия аутентификации.
2. Не думаю, что смысл в проверке is_owner имеет смысл вообще.
3. Её можно упростить до вида:

def login(request):
    defaults = {
        'authentication_form': CustomAuthForm,
        'template_name': 'accounts/login.html',
        }
    if not request.user.is_authenticated() and request.user.is_owner():
        return redirect('/asdasdasd')
    return auth_login(request, **defaults)


Теперь по поводу вопроса:

Пользователь зашёл и ввёл логин/пароль. Его перекинуло на стандартную View авторизации джанги (иными словами, эта вьюха вообще не нужна: всё что она делает - редиректит ), вот он и вошёл безо всяких проверок на owner.

Для решения задачи необходимо написать собственное представление для входа в систему.

P.S. Какие странные пользователи появились у моей любимой Django в последнее время. Аж дух захватывает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы