用户问题中的声明性授权
Posted
技术标签:
【中文标题】用户问题中的声明性授权【英文标题】:declerative_authorization on User problem 【发布时间】:2011-02-06 14:23:44 【问题描述】:我正在尝试使用 declerative_authorization 在我的用户控制器中阻止除创建和更新之外的所有默认方法。但是当时我将 filter_resource_access 或 filter_access_to 添加到我的 usersController 中,我总是得到“找不到没有 ID 的用户”。有人愿意解释为什么会发生这种情况吗?
类用户控制器 定义新 @user = User.new 结束定义创建 @user = User.new(params[:user]) 如果@user.save flash[:notice] = "帐号已注册!" 重定向到 account_url 别的 渲染 :action => :new 结尾 结束
默认显示 @user = @current_user 结束
定义编辑 @user = @current_user 结束
定义更新 @user = @current_user # 让我们的观点“更干净”和更一致 如果@user.update_attributes(params[:user]) flash[:notice] = "帐户更新!" 重定向到 account_url 别的 渲染 :action => :edit 结尾 结尾 结尾
【问题讨论】:
【参考方案1】:您应该在使用before_filter
调用filter_access_to
之前设置@user
变量,因为当您调用filter_access_to
时,declarative_authorization 会尝试访问@user
。
before_filter :set_user
filter_access_to :all
...
protected
def set_user
@user = @current_user
end
也许您在filter_access_to
调用中将attribute_check
参数设置为true
?我有一个类似的控制器,我真的不需要before_filter
。
另一个可能导致它的原因是您的User
模型中的using_access_control
调用。
【讨论】:
以上是关于用户问题中的声明性授权的主要内容,如果未能解决你的问题,请参考以下文章
IdentityServer4 客户端范围和基于用户声明的授权
Java EE 声明性安全性,无法为 JDBC 领域用户加载组