Bol*_*wyn 12 authentication django session request
首先:这与此不一样.ModelBackend没有会员.request
我想访问当前用户的会话而无需访问全局请求对象或他/她的会话ID.
为什么?我编写了自己的身份验证后端,进行了扩展ModelBackend
.因为我有这个函数get_user (self, user_id)
,每次请求都会调用它(这是由Django auth中间件自动完成的).不幸的是,get_user
无法访问request
,但在我的情况下,我想检查会话中的数据(为什么又一次?因为我没有本地数据库并从远程中间件获取所有数据.会话将是一个舒适的方式来做某种缓存).
您可以使用微小的ThreadLocalMiddleware.它使请求对象随处可用.
from django_tools.middlewares import ThreadLocal
request = ThreadLocal.get_current_request()
# request.session <-- is now available
Run Code Online (Sandbox Code Playgroud)
不要忘记将中间件添加到settings.py的MIDDLEWARE_CLASSES元组中:
MIDDLEWARE_CLASSES = (
...
'django_tools.middlewares.ThreadLocal.ThreadLocalMiddleware',
...
)
Run Code Online (Sandbox Code Playgroud)
( RemoteUserBackend
from django.contrib.auth.backends
) 使用特殊的中间件RemoteUserMiddleware
来访问请求数据。也许你也可以这样做。
归档时间: |
|
查看次数: |
5535 次 |
最近记录: |