gpt4 book ai didi

python - MongoEngine 用户认证(django)

转载 作者:太空狗 更新时间:2023-10-29 20:54:51 25 4
gpt4 key购买 nike

我正在尝试在我正在编写的 Django 项目中使用 MongoEngine。我很难获得(或理解)身份验证后端的工作原理。

据我所知,用户对象没有存储在请求中。

我让它工作了,但我不确定我是否以正确/安全的方式进行操作。如果有人可以查看我的代码,我将不胜感激。

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')

在我的 settings.py 中,我在文件顶部添加了:

AUTHENTICATION_BACKENDS = (
'mongoengine.django.auth.MongoEngineBackend',
)

SESSION_ENGINE = 'mongoengine.django.sessions'

import mongoengine
mongoengine.connect('project')

最佳答案

不确定您是否看到任何问题,因为您没有提及任何问题,但我使用 mongoengine 作为我的身份验证后端,这就是我处理它的方式:

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')

你说用户没有存储在请求中......如果你的意思是它在模板中不可用,你需要在你的设置中添加 auth 模板上下文处理器(除了你已经设置的 AUTHENTICATION_BACKENDS 设置) :

TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.contrib.auth.context_processors.auth',
...
)

要使用户在登录后附加到后续请求,请设置AuthenticationMiddleware,用户将成为您所有 View 中request的属性:

MIDDLEWARE_CLASSES = (
...
'django.contrib.auth.middleware.AuthenticationMiddleware',
...
)

关于python - MongoEngine 用户认证(django),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7492775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com