我在 Controller 中全部显示了这个:
if not session[:admin]
flash[:notice] = "You don't have the rights to do #{:action}."
redirect_to :action=>:index
return
end
和它的兄弟:
if not session[:user] and not session[:admin]
flash[:notice] = "You don't have the rights to do #{:action}."
redirect_to :action=>:index
return
end
当我想在方法中使用它时,我想将这一切减少到一个声明行:
def action_which_requires_rights
require_rights :admin
#or:
#:require_rights :user_or_admin
end
显然,如果require_rights失败,则我不希望其余方法执行。我发誓有一种方法可以做到这一点,但我找不到我在哪里读到的。我在想象这个吗?
最佳答案
首先你可以这样做:unless session[:admin]
而不是 if not ...
然后你可以有一个调用你的方法的before过滤器,这个方法会做你的redirect_to“url”并返回。
我有一个问题,我希望您不只是将管理员的 id 存储在 session 中作为您唯一的身份验证方式,在您的用户模型上拥有一个属性并进行查询,这可能是更安全的选择。
关于ruby-on-rails - if/then/else/RETURN/end 的声明性 ruby 编程替换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/459777/