1

login_required 可以用作 django 中的装饰器,但带有用户/密码的 login.html 受应用程序限制。

@login_required
def myview(request):
...

现在我想在 login.html 中显示一个按钮,以将用户重定向到其他站点的 oauth 流。该网站修复了我的回调 url 静态。现在不需要用户/密码。

那么如何在从 oauth 服务器回调后将用户重定向到最后一个请求(可能会发布数据)?

session/cookies 应该用来存储请求对象吗?

4

1 回答 1

1

您可以将会话信息附加到 Django 中的匿名用户会话;每个人都会获得一个会话 cookie,无论是否匿名。该数据在用户登录后保留。

但是,如果您的会话数据存储在数据库中,那么随着时间的推移,它将占用越来越多的空间,您将需要定期执行清除旧会话的任务。

但是您是否应该保存 POST 数据以供以后重播?

在某些情况下,这可能没问题——当您确定 POST 请求是幂等的、已经运行过一次并且数据只是用于生成正确的页面供用户查看时。

不过,您可能不应该将此作为通用解决方案来实现。如果可以构造一个通过 OAuth 重定向的 GET 请求,然后作为经过身份验证的用户自动 POST,那么您手上可能有一个主要的 CSRF 漏洞。

于 2013-01-10T16:16:33.970 回答