• Как можно защитить свой АПИ в SPA или SSR приложение?

    Для yii2 есть штатный механизм токенов - bearer token

    В своем проекте я создал BaseController наследуемый от ActiveController и в нем метод

    public function behaviors()
    	{
    		$arBehaviors = parent::behaviors();
    
    		$arBehaviors['authenticator'] = [
    			'class' => HttpBearerAuth::class,
    		];
    
    		$arBehaviors['contentNegotiator'] = [
    			'class' => ContentNegotiator::class,
    			'formats' => [
    				'application/json' => Response::FORMAT_JSON,
    			],
    		];
    
    		return $arBehaviors;
    	}


    Во vue отправляется ajax запрос на back с логином/паролем. На back'е примерно такой action
    public function actionLogin()
    	{
    		$model = new LoginForm();
    
    		if ($model->load(Yii::$app->getRequest()->getBodyParams(), '') && $model->login()) {
    			$oUser = User::findOne(Yii::$app->user->id);
    			$oUser->generateAuthKey();
    			$oUser->save();
    
    			$userData = $oUser->toArray();
    			unset($userData['password_hash']);
    			unset($userData['password_reset_token']);
    			return ['access_token' => $oUser->getAuthKey(), 'user' => $userData];
    		}
    		else {
    			$model->validate();
    			return $model;
    		}
    	}
    Ответ написан
    3 комментария