from django.urls import reverse
from rest_framework.test import APITestCase
from rest_framework.authtoken.models import Token
from faker import Faker
fake = Faker()
APICLIENT = APIClient()
from factory_djoy import UserFactory
class TestAccount(APITestCase):
def setUp(self):
self.user = UserFactory()
def test_print_name(self):
print(self.user.is_authenticated)
# do something here
為什么print(self.user.is_authenticated)為真。我試圖簡單地使用User.objects.create創建一個用戶,它也回傳與 is_authenticated 相同的True。
我的理解是在進行登錄或force_authenticate之前它不應該是True 。我做錯了什么或者我的理解不正確?
uj5u.com熱心網友回復:
.is_authenticated不不意味著用戶在服務器端進行身份驗證。所有User物件都有is_authenticated = True,它用于區分User[Django-doc]物件和AnonymousUser[Django-doc]。
實際上,默認情況下,如果您查找,如果沒有用戶附加到設定,request.user它將回傳一個物件,或者如果會話系結到該用戶,則回傳一個物件。AnonymousUserUser
對于內置User模型,.is_autenticated 將始終回傳True[GitHub]:
@property def is_authenticated(self): """ Always return True. This is a way to tell if the user has been authenticated in templates. """ return True
但是,您可以定義自己的自定義用戶模型,并定義更復雜的測驗:例如,只有具有 的用戶is_active可以進行身份??驗證,或者只有在過去兩個月處于活動狀態的用戶才能進行身份驗證。
如果您在 view 中撰寫if user.is_authenticated,它將因此為內置用戶模型區分 an AnonymousUser(將回傳False)和 a User。但是您可以使用自定義實作來定義自定義用戶模型。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/415214.html
標籤:
