我在我的zf2應用程序中使用Doctrine和MongoDB ODM模塊。 ZfcUser用於授權。如何使用兩個集合來驗證zfcuser?
有沒有辦法使用兩個集合,說users
和clients
通過zfcuser +原則認證?我很好奇,如果有一種方法可以將兩個mongo集合合併爲一個用於合併進行身份驗證?
我在我的zf2應用程序中使用Doctrine和MongoDB ODM模塊。 ZfcUser用於授權。如何使用兩個集合來驗證zfcuser?
有沒有辦法使用兩個集合,說users
和clients
通過zfcuser +原則認證?我很好奇,如果有一種方法可以將兩個mongo集合合併爲一個用於合併進行身份驗證?
你不需要合併th Ë用戶到一個集合,你可以有多個「認證適配器」(見ZfcUser\Authentication\Adapter\Db
爲例)
這些全局配置文件中定義的:zfcuser.global.php
我的每一個適配器都在優先級順序運行,直到一個返回成功的身份驗證結果。
例如;我有Users
和Candidates
實體的以下配置。
/**
* Authentication Adapters
*
* Specify the adapters that will be used to try and authenticate the user
*
* Default value: array containing 'ZfcUser\Authentication\Adapter\Db' with priority 100
* Accepted values: array containing services that implement 'ZfcUser\Authentication\Adapter\ChainableAdapter'
*/
'auth_adapters' => array(
50 => 'JobboardCandidate\Authentication\Adapter\CandidateDatabaseAdapter',
75 => 'JobboardUser\Authentication\Adapter\UserDatabaseAdapter',
//100 => 'ZfcUser\Authentication\Adapter\Db', [this is the default]
),
正如我從你的問題所理解的,你想得到一個具有兩種不同文檔類型的集合,以便你可以使用這個集合進行驗證。 如果您使用原則繼承映射您可以擁有兩個不同的類並在一個集合中解析它們。 在這種情況下,您的Client
課程將延長您的User
課程。如果你想使用findAll
方法在你UserRepository
你會得到雙方的客戶和用戶一個Collection
這將幫助你實現你想要的:
<?php
namespace MyProject\Model;
/**
* @Document
* @InheritanceType("SINGLE_COLLECTION")
* @DiscriminatorField(name="discriminator", type="string")
* @DiscriminatorMap({"user" = "User", "client" = "Client"})
*/
class User
{
// ...
}
/**
* @Document
*/
class Client extends User
{
// ...
}
然後
$userRepository->findAll();
閱讀更多關於繼承映射here in the Doctrine documentation
我對你的工作沒有任何體驗,但是在純mongodb中你只會做兩個查詢。 – Jarema