2017-01-23 75 views
0

我有successifully設置一個REST API其中successifully正確但是訪問控制濾波器總是失敗時需要登錄Yii2 REST API行爲

public function behaviors() 
{ 
    $behaviors = parent::behaviors(); 

    $auth = $behaviors['authenticator'] = [ 
     'class' => HttpBearerAuth::className(), 
     'only' => ['can-access'], 
    ]; 
    $behaviors['access'] = [ //This fails 
     'class' => AccessControl::className(), 
     'only' => ['can-access'], 
     'rules' => [ 
      [ 
       'actions' => ['can-access'], 
       'allow' => true, 
       'roles' => ['@'], 
      ], 
     ], 
    ]; 
    $behaviors['contentNegotiator'] = [ 
     'class' => ContentNegotiator::className(), 
     'formats' => [ 
      'application/json' => Response::FORMAT_JSON, 
     ], 
    ]; 

    ]; 


    $behaviors['authenticator']['except'] = ['options']; 
    return $behaviors; 
} 

甲上述訪問控制濾波器總是失敗

返回識別用戶

但是,消除它們,然後在控制器rewrting作爲

public function actionCanAccess() 
{ 
    echo $access = Yii::$app->user->isGuest; //this returns false 

} 

可能是原因是什麼行爲訪問控制過濾器失效後但在檢查控制器時,其工作正常如預期

回答

0

請先嚐試'roles' => ['@'],註釋掉。如果它工作,比當前用戶登錄,沒有任何作用。