访问受保护页面时编辑新的用户会话路径

时间:2014-07-03 16:55:03

标签: ruby-on-rails devise

当用户登录时,用户将被重定向到/ 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 

1 个答案:

答案 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!