Мне нужно и другого сайта, чтобы брал данные польователя по api и все, не создание записи, не редактирование и прочее. То есть мне нужен статичный токен создать и все для данного сайта, чтобы левые запросы не могли брать данные с этого сайта.
Как я понял мне нужен findIdentityByAccessToken может конечно я могу ошибаться
Но выходит что я в браузере или postman делаю запрос хоть secret_token или другой, то я все равно получаю ответ.
Моя реализация
Контроллер
class UserController extends ActiveController
{
public $modelClass = 'backend\models\User';
}
Модель
class User extends ActiveRecord implements IdentityInterface
{
/**
* @inheritdoc
*/
public static function tableName()
{
return '{{%user}}';
}
public function actions()
{
$actions = parent::actions();
unset($actions['delete'], $actions['create'], $actions['update']);
}
public function fields()
{
return [
'name' => function(){
return $this->last_name.' '.$this->name.' '.$this->patronymic;
},
'position' => function(){
return $this->position->name;
},
'phone'
];
}
public static function findIdentityByAccessToken($token, $type = null)
{
// Вот тут я вообще не пойму как указывать тот токен, который мне нужен
return 'secret_token' == $token;
}
}
Или мне нужен другой метод, как понимаю это при когда залогинировался пользователь или нет?
Например
QueryParamsclass UserController extends ActiveController
{
const API_KEY = 'secret';
public $modelClass = 'backend\models\User';
public function behaviors()
{
$behaviors = parent::behaviors();
$behaviors['authenticator']['class'] = QueryParamAuth::className();
$behaviors['authenticator']['tokenParam'] = 'token';
return [
'access' => [
'class' => AccessControl::className(),
'user' => false,
'rules' => [
[
'allow' => true,
'matchCallback' => function ($rule, $action){
$data = \Yii::$app->getRequest()->getBodyParams();
return isset($data['token']) === self::API_KEY;
},
],
],
],
];
}
}