2014-06-11 69 views
4

我開始使用yii2,並且我正在從web應用程序提供REST Api。我找不到任何關於如何使用yii2 REST api提供登錄功能的文檔。 以前在yii1,我們曾經有一個名爲actionLogin的操作,它接受用戶名和密碼並對其進行身份驗證(使用用戶模型)。 那是一樣的方法還是yii2?就像在UserController(在Api模塊下)有一個使用GET請求類型的actionLogin方法,並且一旦成功驗證返回User object(對後續調用使用訪問令牌?)?在Yii2上登錄的REST API調用

+0

看演示程序https://github.com/githubjeka/angular-yii2 –

回答

1

好吧,它看起來像創建一個actionLogin方法,並接受用戶名和密碼仍然是繼續yii2(從yii2開發人員確認)的方式。此外,您必須從身份驗證行爲中排除actionLogin,並且有幾種方法可以完成(通過在操作之前覆蓋並且不調用身份驗證方法),另一種方法是在某個控制器中添加此actionLogin方法描述認證行爲)。

+0

我想用代碼解釋!!! – aidonsnous

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