我正在尝试在Play中创建一个基本的Web登录/身份验证系统。基于Play文档我应该通过Play的Session cookie在请求中保存数据;这就是我的登录信息:
def login() = Action.async(parse.json) { implicit request =>
implicit val loginInfoReads: Reads[LoginInfo] = Json.reads[LoginInfo]
val newSession = request.session +
("test" -> "yep")
// @todo: add real error handling
val unauthedUser = request.body.validate(loginInfoReads)
.getOrElse(throw new Exception("Something went wrong with the login request"))
UserService.authAndGetUser(unauthedUser.email, unauthedUser.password).map { res =>
Ok(res.name).withSession(newSession)
}
我可以在Chrome开发工具中看到响应Cookie中包含的Cookie,但是当我发出后续请求以获取会话中的数据时,我得到一张空地图:
Logger.debug(request.session.data.toString)
日志:
Map()
并尝试通过request.session.get(“test”)访问“test”失败。
我在这里缺少什么?为什么我的会话数据不会跨请求持续存在?
由于
答案 0 :(得分:0)
原来这不是Scala / Play问题,在点击localhost时Chrome和Cookie更常见的问题。以下是为我解决的问题: