保护未登录用户的路由

时间:2014-10-29 17:25:07

标签: ruby-on-rails authentication ruby-on-rails-4 devise routes

我使用Rails 4和Devise来验证用户身份。用户登录后,会将其重定向到sinatra应用程序。我需要保护该页面的路由免受未签名用户的攻击。<​​/ p>

因此,如果他们未登录,我需要阻止用户访问的路线是/ kibana

这是我的路线档案:

  devise_for :user
  root 'pages#home'

  mount Kibana::Sinatra::Web => '/kibana', :trailing_slash => true

非常感谢任何帮助,谢谢。

这里编辑的是我的ApplicationController文件

 protect_from_forgery
  before_filter :check_user
  private
  def check_user
    if request.fullpath =~ /kibana/ && !user_signed_in? 
       authenticate :user do
       end
    end
  end

然而,不是我需要的结果。当我访问localhost:3000时,它会将我重定向到用户登录,并注明我需要登录,但是当我访问/ kibana /它只是显示它而无需登录。

1 个答案:

答案 0 :(得分:1)

<击> 或多或少这样:

class ApplicationController

  before_filter :check_user

  private

  def check_user
    if !current_user && request.fullpath =~ /kibana/
      redirect_to your_app_login_url
    end
  end

end

<击> 编辑:

看起来我错了,在你的路线中.rb:

authenticate :user do
  mount Kibana::Sinatra::Web => '/kibana', :trailing_slash => true
end