我想要一个功能工作流程如下:
1)用户从网页登录(输入用户名/密码),验证成功,然后我们可以从数据库(而不是网页)获取用户密码,我们稍后会使用。
2)用户确认启动我们提供的小型bot服务,一旦用户确认,那么服务将执行并回调 3)由于僵尸服务是另一个独立的应用程序,因此它必须使用用户帐户回调登录操作(auth)并在用户帐户下记录信息。我的问题是,当我在bot服务应用程序中使用用户的帐户登录时,它失败了,因为密码已被哈希。
有没有办法解决这个问题?
我追踪django源代码,
djanofrom django.contrib import auth
auth.login(request,authenticate)
除非修改源代码,否则似乎无法解决此问题,我的意思是在框架中添加新功能?但显然,这不是最好的主意
任何人都会就此问题提供建议,谢谢
答案 0 :(得分:1)
您应该编写自定义身份验证后端。
https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#writing-an-authentication-backend
from django.contrib.auth.backends import ModelBackend
from django.contrib.auth.models import User
class PasswordlessAuthBackend(ModelBackend):
def authenticate(self, username=None):
try:
return User.objects.get(username=username)
except User.DoesNotExist:
return None
def get_user(self, user_id):
try:
return User.objects.get(pk=user_id)
except User.DoesNotExist:
return None
然后将其添加到您的settings.py
AUTHENTICATION_BACKENDS = (
# ... your other backends
'yourapp.auth_backend.PasswordlessAuthBackend',
)
之后,您可以使用
登录您的观看次数user = authenticate(username=user.username)
login(request, user)