デバイスを使用するRubyOnRails3.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がユーザーにログオンした後に呼び出されます。つまり、追加のチェックが失敗した場合でも、ユーザーはログインしたままになります。