1

ユーザーが閲覧権限のないページにアクセスすると、ログイン ページにリダイレクトされます。ログインすると、サイト ルートにリダイレクトされます。最初に要求したページにリダイレクトする簡単で迅速な方法はありますか?

4

2 に答える 2

3

次のように、隠しフィールドreferring_pageをフォームに追加して、そのフィールドにリファラーをsign_in追加し、存在する場合はそこに戻すことができます。former

def after_sign_in_path_for(resource)
  params[:referring_page] || super
end

これは手動の解決策ですが、コントローラー側で複雑なロジックを使用するよりも好きです。

于 2012-06-30T10:56:48.587 に答える
1

「ユーザーが表示を許可されていないページにアクセスすると、ログインページにリダイレクトされます。ログイン後、サイトルートにリダイレクトされます」と言って、何を達成したいのか正確にはわかりません

1 つは管理者ユーザーで、もう 1 つは非管理者ユーザーの 2 つのユーザー セットがあると仮定します。これを処理する方法は次のようになります。

アプリケーションコントローラー内部

class ApplicationController < ActionController::Base
  protect_from_forgery

  check_authorization :unless => :devise_controller?
  before_filter :authenticate_user! 

  rescue_from CanCan::AccessDenied do |exception|
    redirect_to root_url, :alert => exception.message
  end

  protected

  def stored_location_for(resource_or_scope)
    nil
  end

  def after_sign_in_path_for(resource_or_scope)
    if current_user.admin?
      #add your desired path
    else
      #redirect to your desired path
    end
  end
end
于 2012-06-30T05:52:36.587 に答える