- Symfony的2.1.3-dev的
- SonataUserBundle
- SonataAdminBundle
- JMSI18nRoutingBundle
默認情況下的語言是法語,但我啓用 「EN」更改語言
我安裝了這個軟件包,大部分工作都正常。
但我想做到以下幾點:
- 用戶XXX(SonataUserBundle)已在該領域「區域設置」值「恩」
- 當我這個用戶登錄希望現身英文頁面。
- 用戶沒有手動切換。
我認爲這應該在autentification過程中完成。
的問題是,SonataUserBundle(基於FOSUser)不做認證(看到HERE)
於是,我就做THIS,但必須有一些配置問題。
當應用wsse_secured整個網站:
wsse_secured:
pattern: ^/
wsse: true
我得到以下錯誤:令牌未在SecurityContext中找到。
當添加匿名我config.yml:
firewalls:
....
main:
pattern: ^/
wsse: true
anonymous: true
我可以訪問主頁,但嘗試登錄時,我得到這個錯誤: 您必須配置支票路徑被處理防火牆在您的安全防火牆配置中使用form_login。
當添加了它的工作原理,但系統不與我WSSE提供商合作FOS的的CheckPath(我在WsseProvider.php添加的代碼,讓我知道)
所以我的問題:我怎樣才能找到工作這個WSSE認證。我嚴格遵循文檔中的指示。
編輯:
我也許是在我自己的捆綁實現WSSE安全文件犯了一個錯誤。 現在我把它移到奏鳴曲用戶捆綁,我得到以下錯誤:
ErrorException: Catchable Fatal Error: Argument 1 passed to Application\Sonata\UserBundle\Security\Authentication\Provider\WsseProvider::__construct() must implement interface Symfony\Component\Security\Core\User\UserProviderInterface, string given, called in ..\app\cache\dev\appDevDebugProjectContainer.php on line 4413 and defined in ..\src\Application\Sonata\UserBundle\Security\Authentication\Provider\WsseProvider.php line 17
這有什麼錯我的WsseProvider UserProviderInterface。PHP:
<?php
namespace Application\Sonata\UserBundle\Security\Authentication\Provider;
use Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Core\Exception\AuthenticationException;
use Symfony\Component\Security\Core\Exception\NonceExpiredException;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Application\Sonata\UserBundle\Security\Authentication\Token\WsseUserToken;
class WsseProvider implements AuthenticationProviderInterface
{
private $userProvider;
private $cacheDir;
public function __construct(UserProviderInterface $userProvider, $cacheDir)
{
$this->userProvider = $userProvider;
$this->cacheDir = $cacheDir;
}
...