Ruby on rails 在尝试访问页面而未在rails中进行身份验证后,将用户重定向到root
因此,正如标题所说,在用户尝试访问受保护的页面后,如何将用户重定向到根目录而不是登录页面 这是我的routes.rb文件Ruby on rails 在尝试访问页面而未在rails中进行身份验证后,将用户重定向到root,ruby-on-rails,Ruby On Rails,因此,正如标题所说,在用户尝试访问受保护的页面后,如何将用户重定向到根目录而不是登录页面 这是我的routes.rb文件 . . . root 'pages#home' authenticate :user do mount Kibana::Sinatra::Web => '/kibana', :trailing_slash => true end . . . 如果您使用的是authenticate\u user!在控制器中执行以下操作: 在应用程序控制器
.
.
.
root 'pages#home'
authenticate :user do
mount Kibana::Sinatra::Web => '/kibana', :trailing_slash => true
end
.
.
.
如果您使用的是authenticate\u user!在控制器中执行以下操作: 在应用程序控制器中添加以下内容:
protected
def authenticate_user!
redirect_to root_path, notice: "You are not authorised to access this page" unless user_signed_in?
end
但是,如果要从路由进行身份验证,则必须使用约束
mount Kibana::Sinatra::Web => '/kibana', :trailing_slash => true, :constraints => AllowAccess.new
match ':not_found' => redirect('/'), :constraints => { :not_found => /.*/ }
class AllowAccess
def matches?(request)
return false unless request.session["warden.user.user.key"]
end
end
config.autoload_paths += Dir["#{config.root}/lib/**/"]
非常感谢。但这对我不起作用,我仍然重定向到/user/sign_in而不是root.Hello。谢谢你的更新。您能更详细地介绍一下我应该在哪里创建allow_access.rb文件吗?设计gem目录的lib的项目目录中的lib?谢谢。在您的rails lib目录中,不要忘记重新启动服务器,这在启动服务器时引发了以下错误:未初始化的常量AllowAccess(NameError)更新了带有lib autoload的应答