我开始使用yii2,我正在从网络应用中提供REST Api
。我找不到任何关于如何使用yii2 REST api提供登录功能的文档。
以前在yii1
中,我们曾经有一个名为actionLogin
的动作,它接受用户名和密码并对其进行身份验证(使用用户模型)。
这与yii2
的方法相同吗?与UserController
(在Api模块下)一样,有一个actionLogin
方法和GET请求类型,一旦通过身份验证成功返回User object
(后续调用具有访问令牌?)?
答案 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;
}
...
}
直到那边我到了,因为我不知道哪个是我应该使用的控制器(如果UserController
或SiteController
)