如何只允许登录用户访问限制直接输入网址?

时间:2011-12-14 06:31:50

标签: ruby-on-rails-3.1

在Rubyonrails应用程序中我想只登录用户进入内页? 如何将直接输入的网址重定向到索引页?

在php if(!isset($ _ SESSION [id]){header(“location:index.php”)},如何在ruby on rails上实现

1 个答案:

答案 0 :(得分:3)

这里是

在application_controller.rb中:

将此代码放在application_controller中将使其可供所有控制器使用。

class ApplicationController < ActionController::Base
  protect_from_forgery

  protected

def confirm_logged_in
    unless session[:id]
        flash[:notice] = "Please log in"
        redirect_to :root
        return false
    else
        return true
    end
end

end

然后您可以在任何需要它的控制器中使用此方法,例如

如果您需要确认用户已登录以显示该操作,那么

class UsersController < ApplicationController
before_filter :confirm_logged_in, :only => [:show]

def show
    #all your code
end

end

应该有效,因为这将确认访问此节目网址的用户已登录。

有关详细信息,请查看此rails guides on filters的链接。也可以有更有效的方法来实现这一目标。

但是,我会建议使用像CancanGithub)这样的宝石,因为我在很多应用程序中都使用了它,效果很好。上面提到的代码是基本的,有许多更好和更先进的方法来处理这个问题,但它应该做的工作。希望它有所帮助。