2016-05-15 182 views
1

我使用邮递员来测试我的API,但由于某种原因它不再工作在每一个要求是说Yii2 REST API基本身份验证凭证无效

您用一个无效的证书请求。

我注意到,如果我在看的Authorization请求头不露面的调试器。我已经测试了在邮递员中添加其他标题,并且显示出来。

我有用户模型设置的访问令牌common\models\User发现:

public static function findIdentityByAccessToken($token, $type = null) 
    { 
     return static::findOne(['access_token' => $token]); 
    } 

我有这在我的行为控制器的功能:

public function behaviors() 
    { 
     $behaviors = parent::behaviors(); 
     $behaviors['authenticator'] = [ 
      'class' => HttpBasicAuth::className(), 
     ]; 
     $behaviors['access'] = [ 
      'class' => AccessControl::className(), 
      'rules' => [ 
       [ 
        'allow' => true, 
        'roles' => ['@'], 
        'verbs' => ['GET'], 
       ], 
      ], 
     ]; 
     return $behaviors; 
    } 

这里的组件部分我的main.php文件:

'components' => [ 
     'user' => [ 
      'identityClass' => 'common\models\User', 
      'enableAutoLogin' => false, 
     ], 
     'log' => [ 
      'targets' => [ 
       [ 
        'class' => 'yii\log\DbTarget', 
        'levels' => ['error', 'warning'], 
       ], 
      ], 
     ], 
     'urlManager' => [ 
      'enablePrettyUrl' => true, 
      'enableStrictParsing' => true, 
      'showScriptName' => false, 
      'rules' => [ 
       'v1/login' => 'v1/login', 
       ['class' => 'yii\rest\UrlRule', 'controller' => ['v1/user']], 
       ['class' => 'yii\rest\UrlRule', 'controller' => ['v1/userinfo']], 
       'v1/<controller>/<action>' => 'v1/<controller>/<action>', 
      ], 
     ], 
     'request' => [ 
      'parsers' => [ 
       'application/json' => 'yii\web\JsonParser', 
      ] 
     ] 
    ], 

回答

0

我必须将CGIPassAuth on添加到我的目录配置中,因为Apache隐藏了授权标头。

0

您需要通过授权标头B在你的api格式。 Ex- Basic {token}

+0

我确实在请求上传递它,在我需要做的事情中传递它吗? –