在会话中保留 Django 用户

Persist Django user in session

我正在使用 RemoteUserMiddleware to authenticate with VAS

现在我将其设置为 REMOTE_USER 变量仅为我的 SSO 登录设置 URL (/accounts/login/sso/),因为我必须允许我的用户通过表单登录 (对于不在我们的 SSO 系统中的用户)。根据我的调试,用户在VasMiddleware(扩展RemoteUserMiddleware以预处理REMOTE_USER)中正确验证,但在用户被重定向到主页后(/), 身份验证丢失。

如何保留用户已登录的信息?

Django 1.9 will have a PersistentRemoteUserMiddleware,当身份验证 header 仅出现在登录页面时,它将起作用。

如果您查看 patch,在 Django 1.8 中做类似的事情应该不会太难。我会尝试覆盖 process_request,这样它就不会调用 self._remove_invalid_user(request) 来注销您的用户(这可能最终会重复很多代码),或者覆盖 _remove_invalid_user 本身。