python - 如何在登录失败后保持 request.referer 值不被重定向

标签 python session authentication form-submit pyramid

我正在为现有的 Pyramid 项目添加身份验证。我目前正在尝试的最简单的形式(稍后会扩展)是让所有页面都引发 HTTPForbidden。异常 View 是/login,它将询问登录详细信息,并在成功时返回以 request.referer 作为位置的 HTTPFound。

到目前为止一切顺利,这实现了我想要的效果,即在登录页面中断时将用户带回到他们试图访问的页面。我们称此页面为 A。

登录页面是一个带有提交按钮的简单 HTML 表单。

但是,如果用户输入错误的用户名或密码,我想返回到登录页面,并显示一条错误消息“密码错误”或类似内容。发生这种情况时,request.referer 现在是登录页面而不是页面 A。

我如何“存储”页面 A(或者更确切地说是它的 URL),以便当用户最终成功登录时,他们会发现自己回到了页面 A? session 是否用于这样的事情,是否有非 session 的实现方式?我(还)没有针对这个简单页面的 session ,并且我试图避免一次添加不同的组件。

最佳答案

我建议你传递一个参数,比如 login/?next=pageA.html

如果登录失败,您可以将参数 next 再次转发到 /login,即使 referrer 现在指向 /login .

然后,当用户成功登录时,您可以将 if 重定向到 pageA.html,它将保存在您的 next 参数中。

您确实需要检查您的参数 next 是否有效,因为有人可以复制粘贴或尝试篡改此参数。

关于python - 如何在登录失败后保持 request.referer 值不被重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38453730/

相关文章:

python - 确保一个 Action 在递归调用期间只发生一次

python - 如何在 PyQt5 中自定义 QGroupBox 标题?

python - 找到底部图像中黑色像素数量最多的最小平面。找到顶部图像黑色像素的峰值

php - 登录和注销系统问题

java - HttpSession 中的同步是否可行?

authentication - Istio 从 ext-auth 中排除服务

java - 如何实现Grpc用户名/密码认证。 Python 客户端、Java 服务器

c# - FormsAuthentication.FormsCookiePath

python - 尽管使用 pip 和 sudo apt-get install 安装,但在 Ubuntu 上找不到 Pandoc

javascript - 选项卡打开时持续的 session 的身份验证逻辑