如何在config / routes.rb中为命名路由添加访问控制?

时间:2012-03-16 03:44:13

标签: ruby-on-rails

我经常在我的控制器中使用require_admin!。它很棒。

现在,我想像这样添加命名路由:

# config/routes.rb
match "poniesandrainbows" => redirect("https://poniesandrainbows.com")
# ^sadly, not really a website, btw.^

如何限制对该路线的访问?这可能吗?显然它会重定向到公共URL,但我仍然希望将路由保密。

3 个答案:

答案 0 :(得分:1)

应该将这种功能封装在控制器中。路由器处理将请求传递给正确的控制器的管道。控制器的工作是正确地弄清楚如何处理请求。在这个原因中,控制器将使用auth服务(例如require_admin!)来确定是否允许用户被重定向,或者它们是否对另一个命运感到沮丧。

答案 1 :(得分:1)

您无法限制路线的访问权限。

将“poniesandrainbows”与控制器匹配的最安全方法,您可以使用require_admin!然后将它们重定向到公共网址。

您可以尝试在前端解决问题。也许只显示管理员用户的链接。 它不会阻止其他用户将链接直接粘贴到他们的浏览器网址

答案 2 :(得分:1)

实际上这是可能的,尽管其他海报很少提到一个好主意。您可以在此博客文章中了解如何:(向下滚动到路线部分)

http://collectiveidea.com/blog/archives/2011/05/31/user-centric-routing-in-rails-3/