2010-03-05 53 views
1

如果用戶uesrid由域(即組合鍵)限定,那麼使Catalyst::Plugin::Authentication工作的最有效方法是什麼?它支持這個功能嗎?我正在專注於使用Catalyst::Plugin::Authentication::DBI,但如果它沒有當前的功能,我並不反對分叉,修補,重新創建它。如何在Catalyst :: Plugin :: Authentication :: DBI中使用組合鍵用戶ID?

我需要使用某個密碼登錄到某個域名。看起來好像/所有/ C:P:A模塊依賴於簡單的用戶ID /密碼組合。其他例子和提示是值得歡迎的。

回答

-2

真正的答案是Catalyst::Plugin::Authentication需要from_sessionfor_userhandle only serialized keysfor_user返回序列化的關鍵,from_session返回給用戶。這會產生問題,因爲C:P:A:DBI當前不允許多角色用戶在其角色實施中或其from_sessionfor_user實施中。奇怪的是,它確實允許在find_user中的用戶檢索中使用複雜的鍵值條件。目前,撤銷是一個糟糕的假設,所有用戶都使用uid/guid/pkid等進行標識。

爲了使用複合鍵標識用戶,必須將查詢條件附加到存儲或緩存在for_user序列化密鑰中。這兩個都可以通過補丁來實現。

奇怪的是,我最後一次遇到同樣的困惑I created an LDAP store 3 years ago

我會一直保持這個問題的狀態,直到我修補它,分叉它,或者有人給出有用的適用建議Catalyst::Plugin:: Authentication::Store::DBI。我已經重寫了這個模塊,它可以在http://github.com/EvanCarroll/Catalyst-Authentication-Store-DBI

+1

在Auth中沒有這樣的假設,沒有Catalyst :: Plugin :: Authentication :: DBI這樣的模塊,並且如果你在談論Catalyst :: Authentication :: Store :: DBI的答案應該很明顯。 'for_session'和'from_session'只需要反轉。 – hobbs 2010-03-08 20:36:58

+0

假設在Store :: DBI中,屬於用戶在單列上是唯一的,角色是用單列檢索的。好的模塊名稱錯別字。 – 2010-03-08 20:43:01

7
  1. 催化劑::認證::商店:: DBIx ::類支持發現任何排序關鍵字的你喜歡的用戶,爲您提供的所有信息AUTH(與指定password_field除外)是變成一個數據庫查詢,你可以做$c->authenticate({ last_name => "Fred", favorite_color => "Blue" })如果你想。只是實現一個或兩個的方法和繼承,其餘類 - 如果你寫一個RealmStore,而且也沒有理由他們要複雜

  2. 幾乎任何你能想象是可能的。你將不得不使用哪一個取決於你的應用正在做什麼的細節 - 在領域覆蓋find_user將是更簡單的情況;寫一個新的商店將是稍微棘手的。