在Yii2上登录的REST API调用

时间:2014-06-11 18:12:49

标签: rest yii2 yii-rest

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我实施了以下内容:

config / 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