Im做多租戶服務,其中IM用戶進行驗證反對:如何獲得子域UserProvider
的用戶名,密碼,子域
我使用FOSUserBundle
我想用UserProvider要注意從wchich域的調用,然後讓用戶發現。
問題是我無法獲得訪問任何@request我試着容器或設置打針,我得到
:
有延長FOSUserBundle以任何適當的方式「ScopeWideningInjectionException注射檢測範圍加寬」請了解,當驗證(讓用戶登錄)的用戶名?
Im做多租戶服務,其中IM用戶進行驗證反對:如何獲得子域UserProvider
的用戶名,密碼,子域
我使用FOSUserBundle
我想用UserProvider要注意從wchich域的調用,然後讓用戶發現。
問題是我無法獲得訪問任何@request我試着容器或設置打針,我得到
:
有延長FOSUserBundle以任何適當的方式「ScopeWideningInjectionException注射檢測範圍加寬」請了解,當驗證(讓用戶登錄)的用戶名?
Finaly我就是這麼做的:
用於SyndMultiTenantBundle爲多租戶與domainstrategy
提出並作出它與FOSUserBundle一起工作:
感謝阿德里安從SyndicateTheory
它的工作原理就像一個魅力 - 享受!
您是否嘗試過「更改UserProvider的範圍?http://symfony.com/doc/current/cookbook/service_container/scopes.html
my_user_provider:
class: Acme\HelloBundle\UserProvider
scope: request
arguments: [@request]
不知道它會在這種情況下工作。安全的東西棘手。
另一種可能是創建請求聽衆,讓它拉動子域,然後讓它注入到用戶提供商
我有同樣的問題,與Symfony 2.1我能夠給@Service_container作爲參數直接在我的提供商,然後獲取請求。 ..
因爲我更新到2.2 SF,不工作了!
即使您設置「範圍:活動」,或「公衆:真正的」在你的配置。
如果您試圖通過中間監聽程序來獲取請求,它也不會起作用......看起來自SF2.2以來,請求沒有及時注入或類似的東西。
所以在這裏我怎樣才能得到供應商內部的要求,我不知道這是否是乾淨的,但是這是我才發現,我粘貼了2個解決方案,爲SF 2.2和SF 2.1唯一的解決辦法:
SF 2.2
Provider類:
use Symfony\Component\HttpFoundation\Request;
// ...
class WebsiteUserProvider implements UserProviderInterface
{
private $websiteUrl;
// ...
public function __construct(UserManager $userManager)
{
$this->userManager = $userManager;
// Works for sf2.2, init manually the request
$request = Request::createFromGlobals();
$this->websiteUrl = $request->getHost();
}
// ...
}
這就是它!
SF 2。1
Provider類:
// ...
class WebsiteUserProvider implements UserProviderInterface
{
private $websiteUrl;
// ...
public function __construct($container, UserManager $userManager)
{
$this->userManager = $userManager;
if ($container->isScopeActive('request')) {
$this->websiteUrl = $container->get('request')->getHost();
}
}
// ...
}
配置:
sybio_website.user_provider:
class: Sybio\Bundle\WebsiteBundle\Security\Authentication\Provider\WebsiteUserProvider
arguments: [@service_container, @sybio.user_manager]
它給出了問題,我提出了問題:「ScopeWideningInjectionException:範圍擴展注入檢測」 – nicoonee
然後去請求偵聽器。 – Cerad