首页 / 知识
关于不可知的语言:当请求被登录页面中断时保留HTTP POST数据
2023-04-14 18:43:00

Retaining HTTP POST data when a request is interrupted by a login page假设用户正在浏览网站,然后执行某些操作来更改数据库(假设他们添加了评论)。但是,当实际添加评论的请求出现时,我们发现我们需要迫使他们登录才能继续。 假设登录页面要求输入用户名和密码,然后将用户重定向回需要登录时要使用的URL。该重定向适用于仅具有GET参数的URL,但是如果请求最初包含一些HTTP POST数据,则现在将丢失。 涉及HTTP POST数据时,谁能推荐一种处理这种情况的方法? 显然,如果需要的话,登录页面可以动态生成带有所有POST参数的表单以将其传递(尽管看起来很混乱),但是即使如此,登录页面仍无法以任何方式重定向用户到其预期的页面,同时将POST数据保留在请求中。 编辑:我应该明确说明一个额外的限制-想象一下,直到用户提交他们的评论,我们才知道是否需要登录。例如,他们的cookie可能在加载表单和实际提交评论之间已经过期。 这是Ajax技术可能会有所帮助的好地方。当用户单击提交按钮时,在实际提交页面之前,在客户端显示登录对话框并与服务器进行验证。 我可以想到的另一种方法是在主页本身中动态显示或隐藏DIV标签中的登录控件。 您可能想调查为什么Django在自己实现之前删除了此功能。这似乎不是特定于Django的问题,而是另一种跨站点伪造攻击。 2个选择:
只需将POST中所有必要的数据存储在会话中,直到登录过程完成为止。或在数据库中存储某种临时表,然后再检索它。显然,这是伪代码,但是:
或类似的规定。 我知道它说的与语言无关,但是为什么不利用您使用的服务器端语言提供的约定呢?如果是Java,则可以通过设置Request属性来保留数据。您将使用控制器来处理表单,检测登录名然后转发。如果设置了属性,则仅使用该数据预填充表单? 编辑:您还可以使用所指出的Session,但是我很确定,如果您使用Java中的Forward返回登录页面,则Request属性将保持不变。 在他们提交登录页面的页面上收集数据,然后将其存储在您的后端(数据库?)中,然后他们按照登录顺序隐藏页面上的交易ID或类似内容。完成后,使用后端上的事务ID通过查找将它们返回到他们要求的页面,然后将他们发布的所有数据转储到表单中以再次预览,或者仅运行该页面将运行的任何代码。 请注意,如果用户需要登录才能发表评论,那么许多系统(例如博客)都会通过使用与发布评论相同的登录字段来解决此问题。 |
最新内容
相关内容
linux命令是什么语言?
linux命令是什么语言?,系统,环境,代码,传播,管理,语言,操作系统,源码,自由,部分,dos和linux的命令行里面用的是什么语言?1、DOS/Windows/Linuxlinux数据库查找命令?
linux数据库查找命令?,位置,名称,状态,服务,软件,信息,系统,命令,名字,密码,在linux中如何用命令查找文件在哪使用查找命令 “find”命令允许linux数据库同步命令?
linux数据库同步命令?,信息,系统,汽车,车辆,服务,工作,通信,一致,分析,数据,DB2数据库在linux操作系统的指令有哪些?1、linux系统常用操作命令命令查看linux中断?
命令查看linux中断?,网络,系统,状态,管理,地址,进程,命令,数据,信息,基础,Linux终止前台进程的命令首先,连接相应linux主机,进入到linux命令行状linux改语言命令行?
linux改语言命令行?,系统,环境,工具,密码,概念,地方,软件,通信,管理,国际,linux命令行下怎样改变语言将内容改为:LANG=zh_CN.UTF-8LANGUAGE=zh_linux命令行c语言?
linux命令行c语言?,代码,系统,工具,环境,工作,保险,发行,命令,文件,终端,linux终端下如何进行C语言编译1、在Linux下面,如果要编译一个C语言源c语言在linux命令?
c语言在linux命令?,系统,工作,管理,命令,保险,基础,环境,信息,文件,语言,linux系统的命令是什么linux常用命令有pwd命令、cd命令、ls命令、catlinux建立数据库命令?
linux建立数据库命令?,软件,系统,工作,数据,密码,工具,数据库,一致,网络,服务,linux中在shell中怎么创建一个数据库1、以下的文章主要讲述的是linux命令进数据库?
linux命令进数据库?,地址,系统,名字,服务,密码,命令,读法,数据库,操作系统,主机,linux系统mysql数据库怎么进入数据库首先确保linux下mysql安linux清空表数据命令?
linux清空表数据命令?,系统,数据,软件,名称,不了,命令,文件,电脑,地址,位置,Linux删除文件的命令?1、linux 删除文件指令:输入rd盘符名:\文件夹linux拷贝数据命令?
linux拷贝数据命令?,系统,地址,文件,数据,命令,目录,服务,基本知识,项目,密码,linux复制命令?1、在Linux中,用于复制文件和目录的命令是cp。cplinux编写c语言命令?
linux编写c语言命令?,系统,基础,环境,代码,盘面,保险,百度,情况,数据,工具,在Linux系统中,如何运行一个C语言程序?编译。由.c文件生成.o文件,写