scala - 如何 "hold form submission"并在Play Framework中进行身份验证

标签 scala playframework playframework-2.0

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

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

在 Play 中实现这一点的正确方法是什么?

  • 是否应该在重定向到身份验证之前将表单数据存储在 session 中?

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

最佳答案

在 session 中存储临时帖子不是一个好主意, session 存储在 cookie 中,因此它的大小有限。最有可能的是,您需要将其存储到数据库(带有一些标志,即unauthicated: true),并在 session 中仅存储临时帖子的ID,并最终存储一些唯一的 token 。因此,在身份验证后,您可以从 session 中获取这些值并使用重定向,这允许在登录后进一步编辑和最终发布。

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

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

关于scala - 如何 "hold form submission"并在Play Framework中进行身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20797206/

相关文章:

url - Play 中 SEO 友好的路由

playframework - 如何在 play 框架中的 fastag 中传递多个参数

scala - Play 2.0/SBT : Exclude certain transitive dependencies from some/all modules in Build. 斯卡拉

scala - 如何自定义隐式未找到消息

java - Spark - 如何在类中使用 SparkContext?

arrays - 如何将 Scala 数组传递给 Scala vararg 方法?

linux - 安装 Play !在 linux 上使用激活器

templates - 在 play 2.0 scala 中包含 scala.html 文件

scala - 如何在scala中传递一个或无变量arg?

Scala,P08 - 包