首页 文章

无方法错误:在Rails Devise中使用cookie的登录尝试

提问于
浏览
0

这是我用于“当用户未能尝试登录两次r三次”时使用的功能 .

class Users :: SessionsController <Devise :: SessionsController prepend_before_filter:require_no_authentication,:only => [:new,:create] prepend_before_filter:allow_params_authentication!,:only =>:create prepend_before_filter {request.env [“devise.skip_timeout”] = true} def new cookies [:login_attempts] = cookies [:login_attempts] || 0

除非params [:user] [:email] .blank?

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

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

其他

cookies [:login_attempts] = 0

结束

结束

self.resource = resource_class.new(sign_in_params)

clean_up_passwords(资源)

respond_with(resource,serialize_options(resource))
结束#POST / resource / sign_in def create cookies [:email] = params [:user] [:email]

self.resource = warden.authenticate!(auth_options)

如果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)

其他

除非params [:user] [:email] .blank?

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

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

其他

cookies [:login_attempts] = 0

结束

结束

渲染:新的

结束
结束

在session / new中:

<%if cookies [:login_attempts] .to_i> = 3%>

<div> <%= raw recaptcha_tags%> </ div> <%end%>

整个功能工作正常,但重定向到新的,

我收到以下错误:

  • Users :: SessionsController #new中的NoMethodError

未定义的方法`[]'为nil:NilClass

错误显示在“除非params [:user] [:email] .blank?”在上面的控制器新方法行 . *

请尽力帮助我..

1 回答

  • 0

    你的 params[:user] 返回nil对象,a.k.a它不存在 . 你首先要检查它:

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

相关问题