[英]Can Authority Ruby Gem be used with logged out users?
我收到以下錯誤:
undefined method `can_read?' for nil:NilClass
..當試圖訪問已注銷用戶的產品頁面時。 目前我有
class ProductAuthorizer < ApplicationAuthorizer
def self.readable_by?(user)
true
end
end
我想允許甚至未登錄的用戶查看該頁面。 這可能嗎?
我嘗試將默認用戶方法更改為:
config.user_method = :current_user ||= User.new
但是,這會導致問題,我的服務器甚至無法啟動。
好的我在https://github.com/nathanl/authority/pull/32上找到了這個:
好! 為了讓其他人閱讀這個問題,克里斯和我聊天並同意了最好的方法。 這是它的要點。
管理局不會專門處理零用戶或提供特定選項。 我們希望將權限限制為授權並將身份驗證完全分開。 如果沒有用戶登錄,那就是認證問題; 權威無法有意義地回答“這個用戶可以做X嗎?”的問題。 如果沒有給用戶或類似庸醫的東西。
除了哲學觀點,擁有身份驗證處理這是一個更好的用戶體驗。 如果管理員忘記登錄並嘗試某些僅限管理員操作,那么他們會說“拒絕訪問”會讓他感到困惑。 說“請登錄”會更有幫助。
使用Authority的開發人員可以做的是:
有類似Devise的before_filter:authenticate_user! 在任何權威機構檢查請求之前運行(因為任何需要授權的操作顯然需要身份驗證)。 讓他們的用戶方法返回一個像用戶一樣嘎嘎叫的NullUser對象,然后讓他們的授權人知道如何處理那些權限,如果你傳遞nil或其他任何不像用戶那樣嘎嘎叫的東西,它可以改善它給你的錯誤。 克里斯打算實施這個。
嗨,我剛才這個
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.