当用户登录时,用户将被重定向到/ dashboard / index。所以 / dashboard / index受以下保护:
class DashboardController < ApplicationController
before_action :authenticate_user!
def index
end
end
现在,如果有人尝试直接访问/仪表板/索引而未登录。用户将被重定向到/ users / sign_in并显示“您需要先登录或注册才能继续。”
如何让用户重定向到root_path(仍然可以获得该flash消息)?
我尝试过失败:
class ApplicationController < ActionController::Base
def new_user_session_path(resource)
root_path
end
答案 0 :(得分:0)
Devise wiki有recipe/workaround如何做到这一点。
虽然可能更容易使用自定义身份验证器。
您可以添加自己的身份验证器,而不是使用Devise附带的before_action :authenticate_user!
。
class ApplicationController
protected
def user_auth
unless user_signed_in?
# Set flash message
redirect_to root_path
end
end
end
然后告诉您的控制器使用user_auth
代替authenticate_user!