【发布时间】:2019-01-31 00:26:21
【问题描述】:
我正在使用授权后端来使用我自己的数据库以及用户名和密码(我们自己的加密技术)。
现在,当我运行服务器时,它给了我登录按钮。使用它我成功登录。作为回报,我能够获得用户。下面是它的代码。
from django.contrib.auth.models import User
from workforce.models import GlobalUsers
from rest_framework.response import Response
from workforce.globalapiviews import hash_password
class EmailAuthBackend(object):
def authenticate(self, request, username=None, password=None):
try:
hashedpassword = hash_password(password)
user = GlobalUsers.objects.get(username=username, password=hashedpassword)
print(hashedpassword)
if user:
return user
else:
return None
except GlobalUsers.DoesNotExist:
return Response(status=status.HTTP_204_NO_CONTENT)
def get_user(self, wf_user_id):
try:
print(wf_user_id)
return GlobalUsers.objects.get(pk=wf_user_id)
except GlobalUsers.DoesNotExist:
print(wf_user_id)
return None
当涉及到 HTML 时,即使在成功登录的情况下也总是显示“登录”按钮。
观察到,user.is_authenticated 总是返回 false。
谁能告诉我我做错了什么。
提前致谢。
【问题讨论】:
-
向我们展示您的代码
-
@gogaz 添加了代码。
-
你的目标是什么?您想锁定特定的 ViewSet 还是只想在 Browsable API 上登录?
-
也许我错了,但也不应该打电话给
login()?? -
authenticate()不应返回响应
标签: python django django-rest-framework