如果用户未登录,我想设置一个cookie。
My中间件:
class UserStatus(object): def process_response(self,request,response): user_status = 1 if request.user.is_authenticated() else 0 max_age = (20)*52*7*24*60*60 # 20 years (After expiry, cookie gets deleted) response.set_cookie(user_status_cookie,user_status,max_age) return response
最后添加到MIDDLEWARE_CLASSESsettings.py中。
MIDDLEWARE_CLASSESsettings.py
问题:
根据FineManual:
在响应阶段(process_response()和process_exception()中间件)中,从下到上以相反的顺序应用这些类。
因此,我想你最好在auth和会话中间件之前添加你的中间件(假设它仅处理响应)。
话虽这么说,我对你仅在某些页面上有错误这一事实感到有些困惑?
最近遇到了同样的问题,发现访问URL时不带斜杠,并且APPEND_SLASH设置设为true时,就会发生这种情况:
Django处理初始请求
HTTP 301
Django然后使用斜杠末尾处理url的请求
process_response在自定义中间件中运行
任何人都知道为什么永久重定向后在process_response中无法访问某些主要属性(用户和会话)?