我有一个使用设备的 Ruby On Rails 3.x 应用程序。
我的目标是在登录屏幕上添加一个 Yubikey 输入字段。
我已经生成了视图,调整了屏幕(即显示了额外的字段)并更新了路线,如下所示:
devise_for :users, :controllers => { :sessions=>"sessions", :registrations => "registrations" }, :path => "users", :path_names => { :sign_in => "login", :sign_out => "logout", :sign_up => "register" }
不要忘记,我创建了一个会话控制器:
class SessionsController < Devise::SessionsController
def create
begin
if do_some_other_checks
super
else
build_resource
clean_up_passwords(resource)
flash[:alert] = "Login error"
render :new
end
rescue => e
build_resource
clean_up_passwords(resource)
flash[:alert] = "Login error"
render :new
end
end
end
不幸的是,代码并不能很好地工作,它在 Devise 让用户登录后被调用,即即使附加检查失败,用户仍然可以登录。