2016-05-15 185 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

我確實在請求上傳遞它,在我需要做的事情中傳遞它嗎? –