【问题标题】:Yii2 REST API authenticationYii2 REST API 认证
【发布时间】:2014-12-15 19:08:15
【问题描述】:

我一直在寻找教程并阅读了 yii 关于 REST API 和身份验证的官方教程,但我就是不知道如何通过 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();
    }

}
?>

【问题讨论】:

    标签: rest yii2


    【解决方案1】:

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

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

    如果用户没有登录则返回真,否则返回假。

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

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

    【讨论】:

      猜你喜欢
      • 2015-10-18
      • 2016-06-13
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 2014-05-31
      • 2013-02-25
      • 2013-09-28
      相关资源
      最近更新 更多