我使用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 /它只是显示它而无需登录。
答案 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