我正在寻找教程并阅读有关REST API和身份验证的yii官方教程,但我无法弄清楚如何通过REST API对用户进行身份验证。如何配置它。 我使用的是Yii 2.0.1高级模板。我一直试图这样做,但我不确定我是否做得对,以及正确认证用户的正确方法。
下面是我的代码,它返回正确的数据。但我不确定这是不是正确的方法。因为在另一个控制器中,我需要检查用户是否已登录以访问操作。
<?php
namespace api\modules\backend\controllers;
use yii\rest\ActiveController;
use yii\filters\auth\CompositeAuth;
use yii\filters\auth\HttpBasicAuth;
use yii\filters\auth\HttpBearerAuth;
use yii\filters\auth\QueryParamAuth;
use Yii;
use dektrium\user\models\LoginForm;
use dektrium\user\models\User;
class UserController extends ActiveController
{
public $modelClass = "dektrium\user\models\User";
public function actionLogin()
{
$model = new LoginForm;
if ($model->load(\Yii::$app->getRequest()->post()) && $model->login()) {
//return $this->goBack();
echo \Yii::$app->user->identity->getAuthKey();
//echo json_encode(['a'=>Yii::$app->user->getId()]);
}
}
public function actionIndexx()
{
if (\Yii::$app->user->isGuest) {
throw new \HttpHeaderException();
}
echo \Yii::$app->user->getId();
}
}
?>
答案 0 :(得分:4)
我认为登录过程或多或少相同。使用REST API时,只有Url结构不同,但您在操作中执行的操作取决于您。 您在应用程序中的任何位置都可以使用此代码检查用户是否已登录:
\Yii::$app->user->isGuest
如果用户未登录,则返回true,否则返回false。
如果您需要限制对操作的访问权限,那么您可以使用Access Control Filter或Role Based Access Control
我认为即使对于REST API,Access Control Filter
实现也应该是相同的。