Yii2 REST API身份验证

时间:2014-12-12 22:53:25

标签: rest yii2

我正在寻找教程并阅读有关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();
    }

}
?>

1 个答案:

答案 0 :(得分:4)

我认为登录过程或多或少相同。使用REST API时,只有Url结构不同,但您在操作中执行的操作取决于您。 您在应用程序中的任何位置都可以使用此代码检查用户是否已登录:

\Yii::$app->user->isGuest

如果用户未登录,则返回true,否则返回false。

如果您需要限制对操作的访问权限,那么您可以使用Access Control FilterRole Based Access Control

我认为即使对于REST API,Access Control Filter实现也应该是相同的。