Ruby on rails 权限Ruby Gem能否用于已注销的用户?
我得到以下错误:Ruby on rails 权限Ruby Gem能否用于已注销的用户?,ruby-on-rails,authority-gem,Ruby On Rails,Authority Gem,我得到以下错误: undefined method `can_read?' for nil:NilClass ..尝试使用已注销的用户访问产品页面时。目前我有 class ProductAuthorizer < ApplicationAuthorizer def self.readable_by?(user) true end end 但是,这会导致问题,我的服务器甚至无法启动。好的,我在以下位置找到了它: 好的!为了其他读者的利益,克里斯和我 讨论并商定了最佳
undefined method `can_read?' for nil:NilClass
..尝试使用已注销的用户访问产品页面时。目前我有
class ProductAuthorizer < ApplicationAuthorizer
def self.readable_by?(user)
true
end
end
但是,这会导致问题,我的服务器甚至无法启动。好的,我在以下位置找到了它:
好的!为了其他读者的利益,克里斯和我
讨论并商定了最佳的实施方式。以下是本文的要点
它
权威机构不会专门处理零用户或提供特定选项
这样做。我们希望将权限限制为授权,并保持
认证完全独立。如果没有用户登录,则为
认证关注点;权威不能有意义地回答这个问题
问题“这个用户能做X吗?”如果没有给它一个用户或什么的话
那像个庸医
除了哲学上的观点之外,让身份验证处理这一点是非常重要的
更好的用户体验。如果管理员忘记登录并且
尝试一些仅限管理员的操作,这样说会让他们感到困惑
“拒绝访问”。说“请签字”会更有帮助
在“中”
使用权限的开发人员可以做的是:
使用类似Desive的before\u过滤器:验证用户身份!跑步
在对请求进行任何权限检查之前(因为
需要授权(显然需要身份验证)。有他们的
user方法返回一个像用户一样嘎嘎作响的NullUser对象,然后
让他们的授权人知道如何处理那些权威能够处理的事情
你要做的是改善它给你的错误,如果你通过零或任何其他
这不像用户那样嘎嘎作响。克里斯将实施这一计划
嗨,我刚把这个
class ApplicationController < ActionController::Base
def current_or_null_user
if current_user == nil
User.new
else
current_user
end
end
end
class ApplicationController < ActionController::Base
def current_or_null_user
if current_user == nil
User.new
else
current_user
end
end
end
Authority.configure do |config|
config.user_method = :current_or_null_user
end