新手问题 Rails 如何使用 Session ID 获取 Session 的信息?

koell · 2016年04月07日 · 最后由 Freeman1990 回复于 2017年08月24日 · 3363 次阅读

最近在用 rails-api 做一个小项目练手,在做 token 这块的时候,考虑使用 Session ID 做一个简单的认证系统。

  • 使用 ActionDispatch::Session::CacheStore(将 Session 存在内存里) ruby # config/application.rb config.middleware.use ActionDispatch::Session::CacheStore config.session_store :cache_store
  • 创建 Session ruby session[:email] = 'test@example.com' session[:login] = true
  • 获取 Session ID 当成 token 发送到客户端 ruby render json: [ 'token' => session.id ] `
  • 客户端请求需要权限的 API 时需要在 HTTP Header 或 POST 时带上 Token。
  • Rails 使用 Token(Session ID)验证 Session 是否存在和验证用户是否登陆过。

现在前几步已经实现,而最后一步 Google 查了一下午完全没有头绪。 PHP 可以使用 session_id() 重新恢复会话。

session_id($token);

(话说 PHP 的高亮好像坏了……)

请问 Rails 有什么类似的方法可以实现使用 Session ID 恢复会话的方式?

不要用 PHP 的方式来看 Rails 的 Session,实现方式不一样

#1 楼 @huacnlee 『实现方式不一样』是指的 cookie-based 方式吗? 如果是,与存在服务器的 Session 相比,操作这种 Session 的时候要特别注意什么呢?(假设用户都启动 cookie)

为何不把信息存于数据库或者缓存中,然后通过 token 去取呢?

请问找到解决办法吗, 也遇到了类似的问题。。 还是使用了数据库 或其他缓存代替了??

需要 登录 后方可回复, 如果你还没有账号请 注册新账号