Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Проблема с авторизацией пользователя. [RSS Feed]

#1 Апрель 22, 2015 10:18:44

neri
Зарегистрирован: 2015-04-22
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с авторизацией пользователя.

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

Вот мой код:

settings.py

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)
MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
TEMPLATE_CONTEXT_PROCESSORS = (
   "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.core.context_processors.tz",
    "django.contrib.messages.context_processors.messages",
)

views.py
from django.shortcuts import render_to_response, redirect
from django.contrib import auth
from django.core.context_processors import csrf
def mylogin(request):
    args = {}
    args.update(csrf(request))
    if request.POST:
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        user = auth.authenticate(username=username, password=password)
        if user is not None:
                auth.login(request, user)
                return redirect('/')
        else:
            args['login_error'] = "Пользователь не найден"
            return render_to_response('loginsys/login.html', args)
    else:
        return render_to_response('loginsys/login.html', args)
шаблон
{% if user.is_authenticated %}
    <li><a class="navbar-brand" href="/auth/logout/">Выйти <strong>{{ user.username }}</strong>.</a></li>
{% else %}
    <li><a class="navbar-brand" href="/auth/login/">Войти</a></li>
{% endif %}

loginsys.urls.py
from django.conf.urls import patterns, url
from loginsys.views import mylogin
urlpatterns = patterns('',
    url(r'^login/$', mylogin),
)

urls.py
from django.conf.urls import patterns, include, url
from django.contrib import admin


urlpatterns = patterns('',

url(r'^admin/', include(admin.site.urls)),
url(r'^auth/', include('loginsys.urls')),
)
Делаю вроде все как в документации, никак не могу понять в чем ошибка.

Отредактировано neri (Апрель 22, 2015 11:52:38)

Офлайн

#2 Апрель 22, 2015 11:08:45

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Проблема с авторизацией пользователя.

urls.py покажите



Офлайн

#3 Апрель 22, 2015 11:26:29

neri
Зарегистрирован: 2015-04-22
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с авторизацией пользователя.

urls.py

from django.conf.urls import patterns, url
from loginsys.views import mylogin
urlpatterns = patterns('',
    url(r'^login/$', mylogin),
)

Офлайн

#4 Апрель 22, 2015 11:39:35

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

Проблема с авторизацией пользователя.

Офлайн

#5 Апрель 22, 2015 11:54:14

neri
Зарегистрирован: 2015-04-22
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с авторизацией пользователя.

'django.contrib.sessions.middleware.SessionMiddleware' - есть. Выложил просто не все настройки.
Подредактировал первый пост, включив в него все настройки и файлы urls.py

Офлайн

#6 Апрель 22, 2015 12:07:40

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Проблема с авторизацией пользователя.

neri
url(r'^login/$', mylogin),

А как на это урл у вас уходит ПОСТ?



Офлайн

#7 Апрель 22, 2015 14:23:13

neri
Зарегистрирован: 2015-04-22
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с авторизацией пользователя.

Форма отправки?

<div>
        <form action="/auth/login/" method="post">
            {% csrf_token %}
            <label for="username">Имя пользователя</label>
            <input type="text" name="username" id="username">
            <label for="password">Пароль</label>
            <input type="password" name="password" id="password">
            {% if login_error %}
                <label class="error">{{ login_error }} </label>
            {% endif %}
            <input class="btn btn-primary" type="submit" value="Войти">
            <div><a href="/auth/register/">Регистрация</a></div>
        </form>
    </div>

Офлайн

#8 Апрель 22, 2015 15:03:21

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Проблема с авторизацией пользователя.

Вы отправляете авторизационные данные

neri
<form action=“/auth/login/” method=“post”>
не туда, где их хотите обрабатываеть
neri
url(r'^login/$', mylogin),

До вашей view они просто не доходят, ведь согласитесь, /auth/login/ и login/ это как бы разные роуты.



Офлайн

#9 Апрель 22, 2015 15:34:08

neri
Зарегистрирован: 2015-04-22
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с авторизацией пользователя.

Но в urls проекта включены url приложения авторизации.

url(r'^auth/', include('loginsys.urls')),
[
 url(r'^login/$', mylogin), 

Они же должны складываться, и пролучить:

“/auth/login/”

Отредактировано neri (Апрель 22, 2015 15:34:18)

Офлайн

#10 Апрель 22, 2015 16:16:32

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Проблема с авторизацией пользователя.

neri
Они же должны складываться
Не понимаю, с чего вы так решили.



Офлайн

  • Начало
  • » Django
  • » Проблема с авторизацией пользователя. [RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version