当前位置:  开发笔记 > 前端 > 正文

在凤凰中实现记住我

如何解决《在凤凰中实现记住我》经验,为你挑选了1个好方法。

起初我选择用来put_session存储用户ID,因为会话哈希不能被篡改.然而,似乎会话cookie仅在浏览器会话期间持续存在.当用户重新打开浏览器时,它已经消失,用户必须再次登录.

我读到另一种选择可能是为每个用户生成一个安全的随机令牌,并将其存储在数据库中,并将其放入具有高到期日期的常规cookie中.但是,鉴于这个cookie没有篡改保护AFAIK(但我可能错了)并且连接并不总是https,我猜任何人在用户和服务器之间的中间监听http都能够劫持用户会话.

因此,问题是如何以安全的方式在会话中持久保存用户ID?或者其他方式是什么?



1> Alan Wang..:

默认cookie"max-age"直到close borwser.你应该给cookie一个非常高的"max_age"值:http://hexdocs.pm/plug/Plug.Conn.html#put_resp_cookie/4


设置"max_age"的另一种方法,我在官方文档中找不到它,但它有效:

defmodule HelloPhoenix.Endpoint do
  use Phoenix.Endpoint, otp_app: :hello_phoenix
. . .
  plug Plug.Session,
    store: :cookie,
    key: "_hello_phoenix_key",
    signing_salt: "Jk7pxAMf",
    max_age: 2592000 # 60*60*24*30
. . .
end

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有