在rails 4应用程序如何使用auth保护页面

时间:2015-04-13 19:26:36

标签: ruby-on-rails ruby ruby-on-rails-4

我正在获得重定向循环。我清楚地知道为什么,用户注销,重定向到登录页面(welcome #index),用户仍然注销,我们有无限循环。

如何摆脱循环?

我读到了几个选项。

  1. before_action :require_login placing内部需要登录的控制器。很容易,但很多复制粘贴,我们喜欢干燥的不要'我们?
  2. 除了,before_action :require_login, :except => root?我无法找到有关除外的详细信息。我在before_filter上获得了大量点击,似乎已被弃用。
  3. skip_before_action同样在这里,我只能找到点点滴滴:(
  4. 应该有更好的方法来处理这些,是否有路由方式在config / routes.rb中检查路由级别?
  5. 应用程序控制器:

    class ApplicationController < ActionController::Base
      # Prevent CSRF attacks by raising an exception.
      # For APIs, you may want to use :null_session instead.
      protect_from_forgery with: :exception
      helper_method :current_user
      before_action :require_login
    
      private
      def current_user
        @current_user ||= Dedit::User.find(session[:user_id]) if session[:user_id]
      end
    
      private
      def require_login
        redirect_to root_path unless current_user.present?
      end
    end
    

    登录页面控制器:

    class WelcomeController < ApplicationController
        layout 'basic'
    
        def index
        if current_user.present? then redirect_to dedit_path end
        end
    end
    

1 个答案:

答案 0 :(得分:0)

before_action :require_login, except: [:index]