Столкнулся с такой проблемой в yii2 rest api. Создаю магазин. там есть корзина и есть 2 варианта оформления товара. 1 Пользователь не авторизован. Он должен ввести свои данные.. 2. Пользователь авторизован. в первом случае в контроллере CheckOrder нужно заносить все данные о пользователе, если же пользователь авторизован нужно взять ID.
Как взять ID если авторизован, а если нет добавлять его все данные в REST API?
Делал так. не помогает
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator'] = [
'class' => CompositeAuth::className(),
'authMethods' => [
HttpBasicAuth::className(),
HttpBearerAuth::className(),
QueryParamAuth::className(),
],
];
$behaviors['access'] = [
'class' => AccessControl::className(),
'rules' => [
[
'allow' => true,
'roles' => ['@'],
],
],
];
return $behaviors;
}
Метод
public function actionIndex()
{
if(\Yii::$app->user->isGuest) {
return ['msg' => 'GUEST'];
} else {
return \Yii::$app->user->identity->getId();
}
}
Не знаю на сколько это правильно
public static function getAuthTokenFromHeader()
{
if(Yii::$app->request->getHeaders()->get('Authorization')){
$authHeader = Yii::$app->request->getHeaders()->get('Authorization');
preg_match('/^Bearer\s+(.*?)$/', $authHeader, $token);
return $token[1];
}
else{
return null;
}
}
public static function findByToken($token)
{
return static::findOne(['token' => $token]);
}
public static function getIdByToken()
{
$user = self::findByToken(self::getAuthTokenFromHeader());
if($user != null){
return $user->id;
}
else{
return null;
}
}
Виртуальный выделенный сервер (VDS) становится отличным выбором
Программа работает, но в конце выдает эту ошибку: