ruby on rails - RoR | Diseñar un bucle de redireccionamiento porque cancan autorizar
ruby-on-rails ruby-on-rails-3 (1)
Añadí una pequeña condición para que esto funcione.
class ApplicationController < ActionController::Base
protect_from_forgery
#Redirects to login for secure resources
rescue_from CanCan::AccessDenied do |exception|
if user_signed_in?
flash[:error] = "Not authorized to view this page"
session[:user_return_to] = nil
redirect_to root_url
else
flash[:error] = "You must first login to view this page"
session[:user_return_to] = request.url
redirect_to "/users/sign_in"
end
end
end
Ella es mi aplicación.rb
class ApplicationController < ActionController::Base
protect_from_forgery
rescue_from CanCan::AccessDenied do |exception|
flash[:error] = "You must first login to view this page"
session[:user_return_to] = request.url
redirect_to "/users/sign_in"
end
end
Esto redireccionará el uso a la página de inicio de sesión si AccessDenied es throw y el usuario no ha iniciado sesión ("funciona bien"), pero una vez que haya iniciado sesión causará un bucle de redirección si está conectado pero no autorizado por cancan desde la página de inicio de sesión. simplemente los redireccionará al usuario de vuelta a través de la sesión [: user_return_to] = request.url.
La pregunta es: ¿cómo manejo esta lógica si el usuario está conectado pero no autorizado?