Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 无方法错误:在Rails Desive中使用Cookie进行登录尝试_Ruby On Rails_Cookies_Devise - Fatal编程技术网

Ruby on rails 无方法错误:在Rails Desive中使用Cookie进行登录尝试

Ruby on rails 无方法错误:在Rails Desive中使用Cookie进行登录尝试,ruby-on-rails,cookies,devise,Ruby On Rails,Cookies,Devise,这是我用于“当用户尝试登录两次或三次失败时”的功能 类用户::会话控制器[:new, :创建] 在\u筛选器之前预结束\u:允许\u参数\u身份验证!,:仅=> :创建 在筛选器{request.env[“designe.skip_timeout”]=true} def新 cookies[:login_attempts] = cookies[:login_attempts] || 0 **unless params[:user][:email].blank?** if cooki

这是我用于“当用户尝试登录两次或三次失败时”的功能

类用户::会话控制器<设计::会话控制器

在\u筛选器之前预结束\u:不需要\u身份验证,:only=>[:new, :创建]

在\u筛选器之前预结束\u:允许\u参数\u身份验证!,:仅=> :创建

在筛选器{request.env[“designe.skip_timeout”]=true}

def新

cookies[:login_attempts] = cookies[:login_attempts] || 0

   **unless params[:user][:email].blank?**

  if  cookies[:email].eql?(params[:user][:email])

    cookies[:login_attempts] = cookies[:login_attempts].to_i + 1

  else

    cookies[:login_attempts] = 0

  end

end

self.resource = resource_class.new(sign_in_params)

clean_up_passwords(resource)

respond_with(resource, serialize_options(resource))
结束

#发布/资源/登录

def创建

cookies[:email] =   params[:user][:email]

self.resource =  warden.authenticate!(auth_options)

if cookies[:email]

  cookies[:login_attempts] = 0

  set_flash_message(:notice, :signed_in) if is_navigational_format?

  sign_in(resource_name, resource)

  respond_with resource, :location => after_sign_in_path_for(resource)

else

  unless params[:user][:email].blank?

    if   cookies[:email].eql?(params[:user][:email])

      cookies[:login_attempts] = cookies[:login_attempts].to_i + 1

    else

      cookies[:login_attempts] = 0

    end

  end

  render :new

end
结束

在会议/新会议中:

=3%>
整个功能运行正常,但当重定向到新功能时

我收到以下错误:

*用户中的NoMethodError::SessionController#新建

nil:NilClass的未定义方法“[]”

错误显示在上述控制器新方法中的“除非参数[:用户][:电子邮件].blank?”行中*


请尝试帮助我。

您的
参数[:user]
返回nil对象,即它不存在。你应该先检查一下:

if params[:user] && cookies[:email].eql?(params[:user][:email])

若用户两次登录失败,我可以显示recaptcha。那么在哪一步我可以在代码中添加“if valid_captcha”条件和captcha错误消息呢。这很令人困惑……这可能是个新问题
if params[:user] && cookies[:email].eql?(params[:user][:email])