我正在定义一个新的Controller作为,一个JS应用程序和OAuth服务器之间的代理。守则如下:
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我不知道:
发布于 2015-02-12 15:58:21
我会选择像$this->get('fos_oauth_server.controller.token')->tokenAction($request)这样的东西(没有尝试过,但应该有效)。
有关服务定义,请参见https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/config/oauth.xml,别名请参见DependencyInjection文件夹中的别名。Xdebug是您的朋友。
如果在此代理中预先设置了正绕过身份验证的client_保密/client_id,那么您可能完全可以跳过auth。
您可以使用令牌auth (它将用户重定向到登录页面),并为进一步的请求提供一个访问令牌。
这对我在决定使用https://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified的哪种类型的auth机制时有很大帮助。
https://stackoverflow.com/questions/28463274
复制相似问题