4

我开始使用 yii2 并且我REST Api从网络应用程序中提供了一个。我找不到任何关于如何使用 yii2 REST api 提供登录功能的文档。以前在 中yii1,我们曾经有一个名为的操作actionLogin,它接受用户名和密码并对其进行身份验证(使用用户模型)。仍然采用相同的方法yii2吗?就像在UserController(在 Api 模块下)有一个actionLogin具有 GET 请求类型的方法,并且一旦通过身份验证成功返回User object(带有用于后续调用的访问令牌?)?

4

2 回答 2

1

好吧,它看起来像创建一个 actionLogin 方法,并且接受用户名和密码仍然是 yii2 的方式(由 yii2 开发人员确认)。此外,您必须从身份验证行为中排除 actionLogin,并且可以通过多种方式完成(通过在操作之前覆盖而不调用身份验证方法,另一种方法是在某些控制器中添加此 actionLogin 方法描述认证行为)。

于 2014-06-16T15:18:48.507 回答
0

我按照以下方式实现了它:

配置/web.php 文件

    'user' => [
        'identityClass' => 'app\models\User',
        'enableSession' => false,
        'loginUrl' => null,
        //'enableAutoLogin' => false,
    ],

然后我修改了模型用户身份

class User extends \yii\db\ActiveRecord implements \yii\web\IdentityInterface
{
    ....

    public static function findIdentityByAccessToken($token, $type = null)
    {
        return static::findOne(['access_token' => $token]);
    }

    public function updateAccessToken()
    {
        $this->access_token = Yii::$app->security->generateRandomString();
        $this->last_visit_time = date('Y-m-d H:i:s', strtotime('now'));
        //$this->last_login_ip = Yii::$app->request->userIP;
        $this->save();
    }

    public function getId()
    {
        return $this->id;
    }

    public function getAuthKey()
    {
        //return $this->auth_key;
    }

    public function validateAuthKey($authKey)
    {
        //return $this->getAuthKey() === $authKey;
    }
    ...
}

直到我到达那里,因为在我不知道我应该使用哪个控制器之后(如果UserControllerSiteController

于 2016-10-26T21:22:43.490 回答