Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何";保留表格提交”;并在Play框架中进行身份验证_Scala_Playframework_Playframework 2.0 - Fatal编程技术网

Scala 如何";保留表格提交”;并在Play框架中进行身份验证

Scala 如何";保留表格提交”;并在Play框架中进行身份验证,scala,playframework,playframework-2.0,Scala,Playframework,Playframework 2.0,我正在尝试编写一个表单提交机制,如果需要用户进行身份验证,但一旦用户进行了身份验证,我希望表单能够自动提交,而无需用户再次填写值,甚至只需单击按钮 例如,典型的情况是在验证之前在博客上发表文章。通常,未登录的用户将完成帖子,单击“帖子”,然后被重定向到身份验证页面,一旦他通过身份验证,他将不需要返回并填写帖子,然后再次单击“帖子” 在游戏中实现这一点的正确方法是什么 在重定向到身份验证之前,是否应在会话中存储表单数据 也许在身份验证页面中存储对触发身份验证的操作的引用,以便执行第二次重定向 我

我正在尝试编写一个表单提交机制,如果需要用户进行身份验证,但一旦用户进行了身份验证,我希望表单能够自动提交,而无需用户再次填写值,甚至只需单击按钮

例如,典型的情况是在验证之前在博客上发表文章。通常,未登录的用户将完成帖子,单击“帖子”,然后被重定向到身份验证页面,一旦他通过身份验证,他将不需要返回并填写帖子,然后再次单击“帖子”

在游戏中实现这一点的正确方法是什么

  • 在重定向到身份验证之前,是否应在会话中存储表单数据

  • 也许在身份验证页面中存储对触发身份验证的操作的引用,以便执行第二次重定向


    • 我误解了你的问题! 正如biesior所说,最好是在提交表单之前强制进行身份验证

      如果不能,请不要将数据放在会话中,因为它的大小有限(或者只有在数据非常小的情况下)并且已签名。。。事实上,会话cookies并不是为这个而准备的!
      因此,您必须将post数据提交到服务器,使用自定义ID将其存储在缓存(或biesior所说的DB)中,并在查询(或会话cookie)中使用此ID重定向到验证器,然后在将其重定向回服务器时,您可以从ID中重新找到数据并完成帖子。

      在会话中存储临时帖子不是个好主意,会话存储在Cookie中,因此大小有限。最有可能的情况是,您需要将其存储到DB(使用一些标志,例如,
      unauthicated:true
      ),并在会话中只存储临时帖子的id,最终存储一些唯一的令牌。所以在身份验证之后,您可以从会话中获取这些值,并使用重定向,从而允许在登录后进一步编辑和最终发布

      在这种情况下,我还建议使用一些调度程序,它将在几个小时/天之后清除未确认的帖子


      另一方面,允许未经验证/未知的用户填写Post表单并将其存储在DB中(特别是如果Post模型很大和/或允许ie添加文件)不是一个好主意,因为这会带来垃圾邮件和DoS攻击的风险,所以在发送表单之前要求验证可能更容易(ajax?)就像这样。在评论系统中,如discuslivefyre

      她,我说的是形式(如消息或帖子!)信息,而不是身份验证信息!也许我的问题不清楚,我编辑了一篇博客文章,为Ajax制作了一个示例+1:尝试用Ajax提交表单数据。如果由于用户未经身份验证或其会话超时而失败,请使用Ajax对其进行身份验证,然后重试发送数据。客户端从不离开发送数据的页面,因此不需要实现自定义数据存储或登录后重定向系统。