根据敏捷开发书,我有一个Admin
MVC来控制用户的登录方式。在ApplicationController
中,我有before_filter
来检查授权。因此,这将检查用户是否已登录每个页面。
问题在于我希望所有人能够访问new
方法,例如,在用户中(也就是说,任何人都应该能够创建新用户 - 自然!只有管理员用户才能访问UsersController中的其他方法,例如edit
等。最好的方法是什么?
答案 0 :(得分:5)
你可以这个
before_filter :except=>[:method_name] #methods you want to skip filter
OR
before_filter :only=>[:method_name] #methods you want to be filtered before called.
EDITED
before_filter :filter_method, :except=>[:method_name] #methods you want to skip filter
OR
before_filter :filter_method, :only=>[:method_name] #methods you want to be filtered before called.
答案 1 :(得分:3)
您可以在子控制器类中使用skip_before_filter
方法跳过默认的过滤器处理。例如:
class UsersController < ApplicationController
skip_before_filter :authorize, :only => [:new, :create]
end
- 仅针对用户控制器中的:authorize
和new
操作跳过名为create
的前置过滤器,即过滤器仍会应用于所有其他操作。
答案 2 :(得分:0)
我还建议使用CanCan gem进行授权,因为它有一种非常简单和干净的方式来定义授权规则。 http://github.com/ryanb/cancan