[英]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"
並利用路由按照它們定義的順序具有優先級這一事實。 但如果你願意,它確實可以讓你交換訂單。
authenticate
和authenticated
之間的區別在於,前者會導致身份驗證檢查,如果用戶未通過身份驗證,Warden 將拋出異常,以便您重定向到登錄頁面。 如果用戶未登錄, authenticated
將不會運行該塊。
看:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.