ユーザーが閲覧権限のないページにアクセスすると、ログイン ページにリダイレクトされます。ログインすると、サイト ルートにリダイレクトされます。最初に要求したページにリダイレクトする簡単で迅速な方法はありますか?
質問する
983 次
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 に答える