[英]django user auth without typing password
我希望功能工作流程如下:
1)用戶從網頁上登錄(鍵入用戶名/密碼),並進行身份驗證成功,那么我們可以從數據庫(而不是網頁)中獲取用戶的密碼,以后再使用。
2)用戶確認啟動由我們提供的小型bot服務,一旦用戶確認,該服務便會執行並回調3)由於bot服務是另一個獨立的應用程序,因此它必須使用用戶帳戶回調登錄操作(auth)並在用戶帳戶下記錄信息。
我的問題是,當我在bot服務應用中使用用戶的帳戶登錄時,由於密碼已被哈希處理,因此登錄失敗。
有什么辦法解決這個問題?
我跟蹤django源代碼,
djanofrom django.contrib import auth
auth.login(request,authenticate)
除非修改源代碼,否則似乎沒有其他方法可以解決此問題,我的意思是在框架中添加新功能? 但顯然,這不是最好的主意
任何人都可以給這個問題的提示,謝謝
您應該編寫一個自定義身份驗證后端。
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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.