我正在定義一個新控制器,充當JS應用和OAuth服務器之間的代理。代碼如下:通過FOSOAuthServerBundle TokenController使用'forward'
namespace Acme\SecurityBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
class ProxyController extends Controller
{
public function forwardTokenRequestAction(Request $request)
{
if(! $request->isXmlHttpRequest())
{
throw WhateverException();
}
$request->request->add(array(
'client_id'=>'...',
'client_secret'=>'...'
));
return $this->forward('FOSOAuthServerBundle:Token:token');
}
}
但我得到以下錯誤,因爲我轉發到TokenController有一個構造器期待一個OAuth服務器作爲一個參數:
Catchable Fatal Error: Argument 1 passed to FOS\\OAuthServerBundle\\Controller\\TokenController::__construct() must be an instance of OAuth2\\OAuth2, none given
我不知道:
- 在那裏我能得到此服務器實例
- 我怎麼能它傳遞給TokenController
- 如果我的方法作爲一個整體是正確的與否
如果可以訪問FOS的OAuth2的集裝箱服務,我會建議你通過這條路線去。如果您嘗試將身份驗證添加到js應用程序,則可以直接使用oauth2客戶端 – lcapra 2015-02-11 22:42:04
對不起,我不明白FOS OAuth2的容器服務是什麼,您可以精確一點嗎?至於讓我的JS應用程序直接成爲一個OAuth客戶端,很遺憾是不可能的(如果我理解正確的話),因爲FOSOAuthServerBundle實現只允許與JS不兼容的私有客戶端(一個不想公開客戶端ID和祕密JS代碼...)。 – Silverspur 2015-02-12 00:02:44