我正在为现有的金字塔项目添加身份验证。我目前正在尝试的最简单的形式(将在稍后扩展)是针对所有页面提升HTTPForbidden。异常视图是/ login,它将询问登录详细信息,并在成功时返回HTTPFound并将request.referer作为位置。
到目前为止一切都那么好,这就是我想要的,它将用户带回他们试图访问的页面,当登录页面中断它们时。我们称之为A页。
登录页面是一个带有提交按钮的简单HTML表单。
但是,如果用户输错了用户名或密码,我想返回登录页面,并显示错误消息“密码错误”或类似信息。当发生这种情况时,request.referer现在是登录页面而不是页面A.
如何'存储'页面A(或更确切地说是其URL),以便当用户最终成功登录时,他们发现自己回到了页面A?会话是用于这样的事情,是否有非会话方式来实现它?我还没有为这个简单的页面设置会话,并且我试图避免在一次通过中添加不同的组件。
答案 0 :(得分:4)
我建议你传递像login/?next=pageA.html
如果登录失败,您可以再次将参数next
转发至/login
,即使推介人现在指向/login
。
然后,当用户成功登录时,您可以将if重定向到pageA.html
参数中的next
。
您确实需要检查参数next
是否有效,因为有人可以复制粘贴或尝试篡改此参数。