簡體   English   中英

django用戶身份驗證,無需輸入密碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM