ruby-on-rails - 使用设计的ruby 在 Rails 应用程序中,当用户访问 root 时,它们被重定向到/users/sign_in 而不是 root 路径?

  显示原文与译文双语对照的内容

在 Rails 应用程序中,当用户访问 root 时,它们被重定向到/users/sign_in 而不是 root 路径。 我点击导航栏 logo 一样,当我点击,我会重定向到/users/sign_in,就像访问 root 一样,我会重定向到。 以下是我的路线:


 get 'home' => 'static_pages#home', as:"home"



 devise_for :users, :controllers => { registrations: 'registrations' }



 root 'static_pages#home'



将我带到导航栏模板中的/users/sign_in 代替 home_path/root_path的链接:


<a class="navbar-brand" href="<%= home_path %>">Brand</a>



我在前端使用 Angular,这样当用户访问 root 时,路径看起来就像这样:


http://localhost:3000/home#/



如果我手动将url改为/home#/或者/home,仍然会重定向到用户/sign_in 。

我想不出任何其他的信息。 这是我需要重写的默认行为? 我似乎找不到文件自动重定向的东西。 谢谢 帮忙.

应用程序控制器:


class ApplicationController <ActionController::Base


 before_action :authenticate_user!


 protect_from_forgery with: :exception



 def after_sign_in_path_for(user)


 home_path


 end


end



static_pages控制器:


class StaticPagesController <ApplicationController


 def home


 end


end



时间: 原作者:

在你的程序集中,StaticPagesController子类,你设置 before_action :authenticate_user,它将被触发为所有操作,它尝试验证用户。!

这意味着,当用户未登录时,身份验证检查将失败,将重定向到路由中的用户标签。

这是因为 helper authenticate_user 只允许用户在网页上访问网页。! 你需要添加 skip_before_action :authenticate_user! 为了让用户可以访问 home 页面,用户可以访问 statics_controller


class StaticPagesController <ApplicationController


 skip_before_action :authenticate_user!



 def home


 end


end



原作者:
...