1
我正在調查ModelBackend。Django ModelBackend.authenticate是如何工作的?
def authenticate(self, username=None, password=None, **kwargs):
UserModel = get_user_model()
if username is None:
username = kwargs.get(UserModel.USERNAME_FIELD)
try:
user = UserModel._default_manager.get_by_natural_key(username)
except UserModel.DoesNotExist:
# Run the default password hasher once to reduce the timing
# difference between an existing and a non-existing user (#20760).
UserModel().set_password(password)
else:
if user.check_password(password) and self.user_can_authenticate(user):
return user
我很困惑。
authenticate()
在哪裏被調用。- 什麼通過
username
和password
到authenticate()
?
有時,代碼有效,但我不知道它是如何工作的。
UPDATE
我在看一個項目的源代碼。我找到了authenticate()
的定義,但是我找不到它的名字。
grep -r "authenticate" .
./src/myproject/views.py: if request.user.is_authenticated():
./src/lib/backend.py: def authenticate(self, username = None, password = None, **kwargs):
./src/lib/middleware.py: if not request.user.is_authenticated():
./src/lib/decorators.py: if request.user.is_authenticated():
呃,你想在驗證用戶時調用它,並且將它傳遞給用戶名和密碼。 –
@DanielRoseman我正在閱讀一個項目的源代碼。我發現了authenticate()的定義,但是我找不到它被調用的地方。 – BAE
它被你叫了。 –