0

Rails アプリで cancan、devise、および omniauth を使用しています。私は omniauth に非常に満足しており、メソッド current_user は役に立ちます。能力クラスも役に立ちます。ユーザーが登録すると、omniauth からのみメールを取得し、いくつかのパラメーターを使用して手動でユーザーを作成します。だから私はユーザーを作成する方法を工夫していません。

したがって、:database_authenticatable は必要ありません。これにより、パスワードなしでユーザーを保存できなくなります。ただし、それがない場合、ユーザーは、許可されていないリソースにアクセスしたときに、「/users/sign_in」ではなく「/」に移動します。

:database_authenticatable を使用せず、ユーザーが許可されていない場合は「/users/sign_in」に移動させたいと考えています。どうすればいいですか?

注: 私のコントローラーのほとんどすべてに、authenticate_user がきめ細かく設定されています。たとえば、次のようにします。

class UsersController < ApplicationController

    before_filter :authenticate_user!, :except => [:index, :index_small, :show,
     :new , :sign_in ]

before_filter :authenticate_user!そのため、application_controllerで何かできるかどうかわかりません。すべてのコントローラーでこのフィルターを取り除くことができれば、それもいいでしょう。

4

1 に答える 1

2

とった!

任意のヘルパーで、sign_in_path を上書きします

 module UsersHelper
  def sign_in_path
    '/users/sign_in'
  end
 end

また、最も重要なbefore_filter :authenticate_user!こととして、cancan を使用する場合は、コントローラから完全に削除する必要があります。

于 2012-07-04T11:24:38.003 に答える