簡體   English   中英

權限Ruby Gem可以與已注銷的用戶一起使用嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM