ないあなたはすべての問題を見ているかどうかわから:私は、ファイルの先頭に追加している私のsettings.pyで
def login(request):
user = authenticate(request.POST['username'],request.POST['password'])
if user is not None:
request.session['user'] = user
if user.is_authenticated:
return HttpResponse(user)
else:
return HttpResponse('login failed')
def new_page(request):
try:
user = request.session['user']
if user.is_authenticated:
return HttpResponse('welcome')
except:
return HttpResponse('need be logged in')
認証バックエンドと、これは私がそれを処理する方法を次のとおりです。
from django.contrib.auth import login, User
from mongoengine.queryset import DoesNotExist
def login_view(request):
try:
user = User.objects.get(username=request.POST['username'])
if user.check_password(request.POST['password']):
user.backend = 'mongoengine.django.auth.MongoEngineBackend'
login(request, user)
request.session.set_expiry(60 * 60 * 1) # 1 hour timeout
return HttpResponse(user)
else:
return HttpResponse('login failed')
except DoesNotExist:
return HttpResponse('user does not exist')
except Exception
return HttpResponse('unknown error')
あなたはユーザーがリクエストに格納されていない...あなたはそれがテンプレートでは使用できないという意味であれば、あなたは認証テンプレートのコンテキストプロセッサを追加する必要があると言いますあなたにRの設定(あなたの設定AUTHENTICATION_BACKENDSに加えて、すでに設定されています):
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.contrib.auth.context_processors.auth',
...
)
ログイン後に後続の要求に添付のユーザーを作成するには、AuthenticationMiddleware
を設定し、ユーザーは、すべてのビューでrequest
の属性になります:
MIDDLEWARE_CLASSES = (
...
'django.contrib.auth.middleware.AuthenticationMiddleware',
...
)
私は実際にどのように動作するのかを助けてくれてありがとうございました。実際のログイン機能と衝突するので、ビューを 'login'と呼ぶべきではありません。 – justinfay
正しい、私はあなたの例をコピーしていた。私が書いたのはパターンを示すことでした – MattoTodd
ポインタありがとう! ** mongoengine.django.auth **から** User **をインポートするのは意味をなさないかもしれません( "普通の"ユーザは** django.contrib.auth.models **からインポートしなければなりません。** django.contribではなく.auth **) –