コントローラに自分の認証機能を加え、ユーザーがサインインしているかどうかを確認します(マネージャなどの場合)。私が見つけた問題は、サインインしていない人が認証が必要なページにアクセスしようとすると、サインインページにリダイレクトされてしまいましたが、サインインした後に、アクセスしようとしています。Rails 4:サインイン後のデビッドリダイレクト
私はApplicationController
に以下を追加しました:
before_filter :store_location
def store_location
p "storing location"
# store last url - this is needed for post-login redirect to whatever the user last visited.
return unless request.get?
if (request.path != "https://stackoverflow.com/users/sign_in" &&
request.path != "https://stackoverflow.com/users/sign_up" &&
request.path != "https://stackoverflow.com/users/password/new" &&
request.path != "https://stackoverflow.com/users/password/edit" &&
request.path != "https://stackoverflow.com/users/confirmation" &&
request.path != "https://stackoverflow.com/users/sign_out" &&
!request.xhr?) # don't store ajax calls
session[:previous_url] = request.fullpath
end
end
def after_sign_in_path_for(resource)
session["user_return_to"] || root_path
end
def new_authorize_employee
if current_user.nil?
redirect_to new_user_session_path, notice: "You must be signed in to access this page."
else
unless current_user.is_employee?
redirect_to root_path, notice: "You do not have permissions to access this page."
end
end
end
とコントローラにユーザーがアクセスしようとしている:
class EmployeesController < ApplicationController
before_action :new_authorize_employee
...
end
が、ユーザーがまだサインインした後、root_url
にリダイレクトされますユーザーがアクセスしようとした最後のページにリダイレクトできるように認証方法を変更するにはどうすればよいですか?
は 'セッションです'と 'セッション[ "user_return_toは"]'と同じことになって? –
私は自分のwikiによればそう信じています:https://github.com/plataformatec/devise/wiki/How-To:Redirect-back-to-current-page-after-sign-in,-ign-out,-サインアップ、アップデート。私はまた両方を試みた –