我有一个组资源,我尝试使用适当的授权进行设置。正确用户和管理员的多个before_filter语句
我想实现授权逻辑是这样的:
- 只有小组成员应能查看他们的小组。
- 管理员可以查看任何组,并采取其他操作。
我试图与该组控制器中执行以下语句的before_filter做到这一点:
before_filter :signed_in_user
before_filter :correct_user, only: :show
before_filter :admin_user, only: [:show, :index, :edit, :update, :destroy]
Correct_user工程,我已经验证了,只有组成员可以查看他们的小组。但是,我想要发生的是admin:show子句来覆盖此,以便管理员可以查看任何组。目前,这是行不通的。我猜我的过滤器订购和选项有些问题。
有人能告诉我我哪里出了问题吗?
编辑
每阿马尔的请求添加我的方法的代码:
private
def correct_user
# User has to be a member to view
@group = Group.find(params[:id])
redirect_to(root_path) if @group.members.find_by_member_id(current_user).nil?
end
def admin_user
redirect_to(root_path) unless current_user.admin?
end
尝试admin_user在过滤器之前过滤correct_user或在show action中为管理员用户和其他人制定条件 – Amar 2012-04-14 15:27:54
谢谢Amar。我试图将admin_user过滤器放在correct_user上面,但没有解决它。我可以把这个条件放在动作中,但是想看看是否有办法用before_filter来做到这一点。 – pejmanjohn 2012-04-19 00:21:49
通过我上面写的方式进行进一步检查时,过滤器要求用户既是管理员又是管理员,正确的用户才能查看组。我希望它是或 – pejmanjohn 2012-04-19 17:17:40