Rails设计根,命名空间和身份验证之间的区别是什么?

时间:2012-02-29 16:14:00

标签: ruby-on-rails devise

在Rails 3.2应用程序中,我使用Devise设置了两个用户模型:Admin和User。

我在路由文件中定义了特定于管理员的根页。

namespace :admin do
    root :to => "pages#welcome"
end

我也看到这个写成

authenticated :user do
  root :to => 'pages#welcome'
end

我无法找到使用namespaceauthenticated之间差异的明确说明,以及这可能对安全产生什么影响。

如果有人能够启发我,或者指出我的清晰描述,我将非常感激。

谢谢!

2 个答案:

答案 0 :(得分:1)

以下是方法authenticated的设计文档的链接,该文档应该回答您的问题:http://rdoc.info/github/plataformatec/devise/ActionDispatch/Routing/Mapper#authenticated-instance_method

答案 1 :(得分:1)

  • 命名空间路由将始终存在 - 这意味着您始终可以调用 / admin,它将路由到#welcome
  • 页面
  • 只有在:用户登录时才会存在经过身份验证的路由。

我用它来创建一个root_path,它是登录用户的仪表板,但是营销页面#welcome for not logged in:

authenticated :user do
  root :to => 'profile#show'
end
root :to => 'pages#welcome'