Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.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 记住我-最简单的方法_Scala_Authentication_Playframework_Playframework 2.2 - Fatal编程技术网

Scala 记住我-最简单的方法

Scala 记住我-最简单的方法,scala,authentication,playframework,playframework-2.2,Scala,Authentication,Playframework,Playframework 2.2,我已经实现了一个简单的身份验证系统,正如剧本文档中所描述的那样。话虽如此,却没有提到“记住我”功能以及如何实现它。在互联网上搜索没有给我任何相关的结果 我想要的是一种简单的方法。我不需要任何插件或库,这是肯定的。我该怎么做 更新: addForm.bindFromRequest.fold( failure => BadRequest(views.html.session add failure), success => Redirect(routes.Account.inde

我已经实现了一个简单的身份验证系统,正如剧本文档中所描述的那样。话虽如此,却没有提到“记住我”功能以及如何实现它。在互联网上搜索没有给我任何相关的结果

我想要的是一种简单的方法。我不需要任何插件或库,这是肯定的。我该怎么做

更新:

addForm.bindFromRequest.fold(
  failure => BadRequest(views.html.session add failure),
  success => Redirect(routes.Account.index())  withSession "email" -> success._1

)

会话没有技术超时。当用户关闭web浏览器时,它将过期

这可以在
conf/application.conf
中通过设置:

session.maxAge=....
不可能在每个会话的基础上覆盖此选项。 这适用于此应用程序使用的所有会话,如所示


另一种方法是使用cookies。要在示例中使用会话时使用cookies(但使用设置最大年龄的选项),可以执行以下操作:

def signText(key: String, value: String): String = {
  val text = key + "=" + value
  Crypto.sign(text) + "-" + text
}

val maxAge: Int = ???

addForm.bindFromRequest.fold(
  failure => BadRequest(views.html.session add failure),
  success => Redirect(routes.Account.index()) withCookies Cookie("PLAY_SESSION",sign("email",success._1),maxAge)
)

@ggovan,我如何设置cookie的过期时间?在创建或复制cookie时设置。@ggovan,但我不直接使用cookie,请查看我的更新。它是否与使用Session“email”->success时的
工作相同。\u 1
是否工作?它是否工作相同?嗯,不,这才是重点;会话无法执行您希望它们执行的操作。cookie的使用方式与会话非常相似(会话是cookie的一种类型)。看看关于cookies和会话的文档,然后进行实验。我知道它们是如何工作的。我的意思是,你的代码和我的代码唯一的区别是你的代码会在
maxAge
中过期,而我的代码会在用户关闭浏览器后过期吗?试试看?不,你首先向我保证不会发生伤害,特别是我的电脑不会自行爆炸。实际上,这不起作用,因为我的代码将电子邮件与长随机键一起保存在cookie中(
“878c0b6495fcc815581ee02fa320717136d30a70 email=test1%40mail.com”
)(通过播放自动添加)这个cookie被称为play_session。而你的只是用maxAge创建包含电子邮件的cookie。这意味着,任何人都可能轻易妥协。我需要为play\u会话cookie设置最大值