2017-10-26 7 views
0

をテストするRESTのために認証できません。は、私はXAMPP上で、次の仮想ホスト名を設定している

これは私のAPIスイートの設定です:私は基本認証などの認証を決定し、私のAPIコントローラから行動機能を削除した場合、私は、Yii2を使用してい

class_name: ApiTester 
modules: 
    enabled: 
     - REST: 
      depends: PhpBrowser 
      #url: /api/ 
      part: Json 
     - Yii2: 
      part: [orm, fixtures] 
      configFile: 'config/web.php' 

、私はその後、200応答を得るのですかと予想されるjson。

public function behaviors() 
    { 
     $behaviors = parent::behaviors(); 
     $behaviors['authenticator'] = [ 
      'class' => HttpBasicAuth::className(), 
      'except' => [], 
     ]; 
     return $behaviors; 
    } 

だから、私はここで行うことができます他に何がわからないんですか、私は

+0

amHttpAuthenticated方法のでhaveHttpHeaderでそれを設定すると、冗長であり、潜在的な問題を引き起こし、Authorizationヘッダを設定します。 – Naktibalda

+0

適切な部分が有効になっているため、競合するモジュールに関するコメントを削除しました。 – Naktibalda

+0

@Naktibaldaそれで、あなたは何を示唆しているのですか、私はそれらを個別に試しました。私は401を得ます。 – Jonnny

答えて

0

を認証していないよ、なぜ私がここに持っていた問題は、私のDBで、私が持っている認証トークンがbase64エンコードませんでした。 PhpBrowser(及びPhpBrowserが使用されているREST)の

public function userIsAuthenticated(\ApiTester $I) 
{ 
    $I->amGoingTo('Check Authentication works'); 
    // fixed now 
    $I->haveHttpHeader('Authorization', 'Basic ' . base64_encode('Basic super_long_db_auth_token')); 
    $I->sendGET(Url::toRoute('/api/reports', true)); 
    $I->seeResponseCodeIs(\Codeception\Util\HttpCode::OK); // 200 
    $I->deleteHeader('Authorization'); 
} 
+0

ヘッダーは 'Authorization:Basic QWxhZGRpbjpPcGVuU2VzYW1l'のように表すことができます。https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side – Jonnny

+0

私は知っています。これはヘッダーが 'Basic token'と表現される方法の一部です – Jonnny

+0

いいえ、base64_encodedトークンの前に' 'Basic ''という接頭語があります。それは必要なので。テストはそれなしで失敗します。だから私はwikiの記事を参照した。 postmanが複数の言語にまたがって構築したすべてのリクエストは、これに接頭辞を付けます:-) – Jonnny

関連する問題