在会话控制器中找到设计current_user,但是当它来到另一个控制器时它变为零

时间:2014-03-29 08:15:48

标签: ruby-on-rails-4 ruby-on-rails-3.2

我正在使用设计进行身份验证,

我在下面的SessionsController #create方法中的“super”之后放了一些文本,在浏览器中找到“current_user”值(使用better_errors gem)。

class SessionsController < Devise::SessionsController
  def new
    super
  end

  def create
    super
    error_debug
  end

  def edit
    super
  end
end

在routes.rb

root :to => "welcome#index"

我在SessionsController #create中得到了current_user值,就像期望的那样,但是当涉及到迎宾#index时,当前用户值为'nil'。

我无法找到背后的原因,请有人协助我解决此问题。

4 个答案:

答案 0 :(得分:0)

首先登录并检入current_user的better_error值

答案 1 :(得分:0)

我检查了日志文件,我发现,错误是

Dall::error server not found

然后我通过sudo apt-get install memcached安装了memcached。它现在工作正常。有关更多说明,请单击以下链接

Rails + Dalli memcache gem: DalliError: No server available

答案 2 :(得分:0)

按照以下步骤操作:

gem install 'devise'
rails generate devise:install
rails generate devise User
rake db:migrate

您的路线应该是这样的 devise_for:用户 &GT;   root:to =&gt; “家#指数”

更改您的开发配置,将以下行添加到config / environments / development.rb config.action_mailer.default_url_options = { host: 'localhost:3000' }

将此代码添加到您的控制器 before_filter :authenticate_user!

如果您使用的是rails 4,请将此代码添加到您的应用中

class ApplicationController&lt;的ActionController ::基

before_filter:configure_permitted_pa​​rameters,if :: devise_controller?

保护

def configure_permitted_pa​​rameters

devise_parameter_sanitizer.for(:sign_up){| u | u.permit({roles:[]},:email,:password,:password_confirmation)}

devise_parameter_sanitizer.for(:sign_in){| u | u.permit(:用户名,:电子邮件)}

端  端

答案 3 :(得分:0)

您的应用程序控制器中是否有protect_from_forgery方法调用?请看这个guides.rubyonrails.org/security.html

相关问题