簡體   English   中英

如果用戶已登錄,則將 root 路由到不同的 controller

[英]route root to different controller if user is logged in

我們正在使用devise並且能夠檢查登錄用戶是否是routes.rb中的管理員,因此只有管理員才能訪問example.com/sidekiq

authenticate :user, ->(user) { user.admin? } do
  mount Sidekiq::Web, at: '/sidekiq'
end

是否有可能做類似的事情並將 root 指向不同的 controller,具體取決於用戶是否登錄,如下面的偽代碼?

if authenticate :user
  root "dashboard#main"
else
  root "pages#landing"
end
authenticated(:user) do
  root "dashboard#main"
end

unauthenticated(:user) do
  root "pages#landing"
end

在這里使用unauthenticated是可選的。 您可以將其定義為:

authenticated(:user) do
  root "dashboard#main"
end
root "pages#landing"

並利用路由按照它們定義的順序具有優先級這一事實。 但如果你願意,它確實可以讓你交換訂單。

authenticateauthenticated之間的區別在於,前者會導致身份驗證檢查,如果用戶未通過身份驗證,Warden 將拋出異常,以便您重定向到登錄頁面。 如果用戶未登錄, authenticated將不會運行該塊。

看:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM