Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Веб-разработка и фреймворки > Проблема с авторизацией в джанго


Автор: Goganchic 17.10.2007, 17:31
Всем привет!
У меня возникла такая проблема: разрабатываю простенькое приложение в джанго. Возникла потребность авторизации. Авторизация используется стандартная, т.е. ф-ии authenticate и login. Код вьюера такой:
Код

import datetime
from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from wm.planner.models import Plan
from django.contrib.auth.models import User
from django.contrib.auth import authenticate, login, logout
from django.views.generic.date_based import object_detail

def index(request):
    if request.user.is_authenticated():
        return HttpResponseRedirect('/planner/plans')
    else:
        return render_to_response('planner/index.html')

def planner_auth(request):
    username = request.POST.get('username', None)
    password = request.POST.get('password', None)

    print "username", username
    print "password", password

    user = authenticate(username=username, password=password)

    if user is None:
        print "wrong user name or password"
        return HttpResponseRedirect('/planner/')

    if not user.is_active:
        print "user is not active"
        return HttpResponseRedirect('/planner/')

    print "auth complete"

    login(request, user)
    return HttpResponseRedirect('/planner/plans')

def plans(request):
    if not request.user.is_authenticated():
        return HttpResponseRedirect('/planner/')

    username = request.user.username
    plans = Plan.objects.filter(user = User.objects.get(username = username))

    return render_to_response('planner/plans.html', {'plans': plans})

def planner_logout(request):
    logout(request)
    return HttpResponseRedirect('/planner/')

При инициализации базы (для тестов использую sqlite3) я создал пользователя с именем admin и паролем admin. При попытке его логина все проходит успешно - т.е. пользователь попадает на нужную станицу.
После этого я решил проверить приложение с "не админом". Для этого в админке я создал в таблице users нового пользователя с именем test и паролем test. При попытке зайти с этими параметрами в свое новое приложение - оно ругаеццо, говорит, что имя пользователя или пароль неверные (ф-ия authenticate возвращает None).
Подскажите пожалуйста что я делаю не так: может быть нужно как-то подругому создавать пользователя или же задать ему какие-то прова доступа?
Система Debian Sid/lenny
Версия django 0.96

Автор: Daevaorn 17.10.2007, 17:39
Цитата(Goganchic @  17.10.2007,  18:31 Найти цитируемый пост)
Подскажите пожалуйста что я делаю не так: может быть нужно как-то подругому создавать пользователя или же задать ему какие-то прова доступа? 

по описанию твоих действий - правильно. ошибка где-то в другом месте.
PS:
Цитата(Goganchic @  17.10.2007,  18:31 Найти цитируемый пост)
ругаеццо

за это вообще предупреждения выносят.

Автор: pythonwin 17.10.2007, 17:40
попробуй ещё спросить на http://python.com.ua/forum/viewforum.php?id=21

Автор: Goganchic 17.10.2007, 17:48
Цитата(Daevaorn @  17.10.2007,  17:39 Найти цитируемый пост)
Цитата(Goganchic @  17.10.2007,  18:31 Найти цитируемый пост)
ругаеццо

за это вообще предупреждения выносят. 

извиняюсь

Цитата(pythonwin @  17.10.2007,  17:40 Найти цитируемый пост)
попробуй ещё спросить на рускоязычном форуме о django 

создал тему и http://python.com.ua/forum/viewtopic.php?pid=8635#p8635

Автор: Goganchic 18.10.2007, 12:14
Проблема решилась: не знаю почему но в поле пароля в базе было написано "test" а формат пароля по сути другой smile
Я добавил еще одного пользователя и все заработало
В моем коде ошибок не было

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)