class MyUser(User):
class Meta:
proxy = True
def do_something:
...
通過以上所述,我使用代理模型技術擴展了Django用戶模型的行爲。我希望能以某種方式自定義request.user,這樣MyUser實例,而不是User實例,每次都被分配給它。如果可能的話,我怎麼能實現呢?使用擴展Django的代理模型自定義request.user用戶模型
class MyUser(User):
class Meta:
proxy = True
def do_something:
...
通過以上所述,我使用代理模型技術擴展了Django用戶模型的行爲。我希望能以某種方式自定義request.user,這樣MyUser實例,而不是User實例,每次都被分配給它。如果可能的話,我怎麼能實現呢?使用擴展Django的代理模型自定義request.user用戶模型
您可以從AuthMiddleware繼承新的中間件類,或創建一個單獨的中間件,它將在django的身份驗證後處理請求,並將request.user更改爲您的用戶實例。
我看着代碼,我的想法就在這裏。晚,但我覺得能爲別人
在文件的myapp/backends.py
from django.contrib.auth import backends
from models import ProxyUser
class ModelBackend(backends.ModelBackend):
'''
Extending to provide a proxy for user
'''
def get_user(self, user_id):
try:
user = ProxyUser.objects.get(pk=user_id)
except ProxyUser.DoesNotExist:
return None
return user if self.user_can_authenticate(user) else None
而在settings.py
AUTHENTICATION_BACKENDS = (
'myapp.backends.ModelBackend',
)
太棒了,我一直在尋找這個。任何想法如何做與AnonymousUser模型類似的東西? – MrDBA 2016-05-22 09:30:29
感謝您的想法是有用的。我會研究中間件。乾杯。 – tamakisquare 2012-03-07 17:27:17