2つのスコープを持つ単一のUserモデルを使用して、1つのアプリケーションでDeviseの設定を完了しましたので、/admin/login
と通常の/users/login
パスを使用できます。これはかなりうまく動作しますが、私のconfig/routes.rbをファイルには、次のようになります。これはかなり結構な作品CanCanとDevise、ロールベースのログインを制限する
devise_for :users,
:path_names => { :sign_in => 'login', :sign_out => 'logout' }
devise_for :admins,
:class_name => 'User',
:skip => [:passwords, :registrations, :confirmations, :sessions],
:controllers => { :sessions => 'admin/sessions' } do
get 'admin/login' => 'admin/sessions#new', :as => :new_admin_session
post 'admin/login' => 'admin/sessions#create', :as => :admin_session
delete 'admin/logout' => 'admin/sessions#destroy', :as => :destroy_admin_session
end
、私は他に影響を与えることなく、アプリケーションの各辺にログインすることができます。つまり、セッション名は別々であり、セッション名は別のセッションにログインすることはありません。
私はRoles
モデルとAbility
モデルでCanCanをセットアップし、これらをデータベースに定義して動作させました。
質問:admin/login
にフォームに記入して、自分の役割でそのエリアにログインできないため、エラーメッセージが表示されるようにしたいですか。どうすればこれを達成できますか?
あなたのアプリは、cancanに役割に基づいた許可を求めています。あなたはどこにいますか?デバッガを使用している場合は、Abilityモデルにトレースを入れて、それを呼び出した人のバックトレースを表示できます。あなたはどこかのフィルターを持っています。 – Amala