将'forward'与FOSOAuthServerBundle TokenController 一起使用



我正在定义一个新的控制器,作为JS应用程序和OAuth服务器之间的代理。代码如下:

namespace AcmeSecurityBundleController;
use SymfonyBundleFrameworkBundleControllerController;
use SymfonyComponentHttpFoundationRequest;
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

我不知道:

  1. 在那里我可以获得此服务器实例
  2. 我如何将其传递给TokenController
  3. 我的方法作为一个整体是否正确

我会选择类似$this->get('fos_oauth_server.controller.token')->tokenAction($request)的东西(未尝试,但应该有效)

请参阅https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/blob/master/Resources/config/oauth.xml用于服务定义,DependencyInjection文件夹中的也用于别名。Xdebug是你的朋友。

如果在该代理中预先设置了client_secret/client_id,则绕过了身份验证,因此可能根本可以跳过身份验证。

您可以使用令牌auth(将用户重定向到登录页面),并为您返回一个访问令牌以供进一步请求。

这对我决定使用哪种类型的身份验证机制有很大帮助https://aaronparecki.com/articles/2012/07/29/1/oauth2-simplified

相关内容

  • 没有找到相关文章