【问题标题】:Unable to fully log out - RailsTutorial.org - Chapter 8无法完全注销 - RailsTutorial.org - 第 8 章
【发布时间】:2012-12-05 09:06:16
【问题描述】:

我正在阅读 Railstutorial.org 上的教程,并通过测试完成了第 8 章。我的问题是,如果我完全按照指南的代码进行操作,我可以登录,但无法退出

如果我点击“注销”,我将被重定向到 root_path,但仍然是登录的成员。

我认为我将行为追溯到我的会话助手。具体如下几行:

  def current_user
    @current_user ||= User.find_by_remember_token(cookies[:remember_token])
  end

通过 rails 控制台和 pry,我能够确定 cookies[:remember_token] 为 nil,但由于我的用户的 remember_token 也是 nil,所以 find_by_remember_token 说:“嘿 nil == nil!太好了!我们找到了我们的用户!”除了这显然不是我们想要的行为。

我已通过将 current_user 方法更改为以下内容来修复它:

  def current_user
   @current_user ||= cookies[:remember_token] && User.find_by_remember_token(cookies[:remember_token])
  end

我完全接受并理解这可能是我的代码中的错误。我从项目中的这一点找到了 Michael Hartl 的提交,并比较了我们的文件,找不到差异。关于这里可能发生的事情的任何想法?

感谢您的宝贵时间。

【问题讨论】:

    标签: ruby-on-rails railstutorial.org


    【解决方案1】:

    把它放在你的...

    控制器:

    def logout
       reset_session
       redirect_to :controller => 'classified', :action => 'list'
    end
    

    在您看来:您需要添加一个注销链接。

    <% else %>
        <p><%= "Welcome #{session[:user].login}!" -%></p>
        <p><%= link_to 'Logout', :controller => 'user',:action => 'logout' -%></p>
    <% end %>
    

    【讨论】:

      猜你喜欢
      • 2012-05-29
      • 2023-04-02
      • 2017-06-13
      • 2015-09-17
      • 1970-01-01
      • 2013-08-19
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      相关资源
      最近更新 更多