Yii2 REST API基本身份验证(SESSION OVERRIDE)

时间:2015-04-17 15:07:09

标签: php rest yii yii2

我在我的Users模型中实现了findIdentityByAccessToken。

public static function findIdentityByAccessToken($token, $type = null)
{
    $apiUser = ApiAccess::find()
        ->where(['access_token' => $token])
        ->one();
    return self::findOne(['id' => $apiUser->idUser]);
}

在浏览器中,如果我已登录系统,我可以点击api get端点,输入我的身份验证令牌并进行正确身份验证。

但是,如果我没有登录,我会被踢回登录界面。使用rest客户端,我返回登录屏幕的HTML。

这表明我眼中的两件事中有一件。要么,在当前状态下,它需要一个“登录会话”'为了访问该api模块。或者#2,我没有正确传递身份验证令牌。

我的请求标题:

 Accept: */*
 Cache-Control: no-cache
 Authentication: Basic base64('mytoken':)

如何覆盖我的"默认"登录行为?或者正确发送身份验证令牌?

1 个答案:

答案 0 :(得分:0)

您可以覆盖模型用户的登录方法和loginByAccessToken以更改登录行为。请参阅:http://www.yiiframework.com/doc-2.0/yii-web-user.html

另一方面,您可能需要的(如果您还没有)是编写控制器并实施登录操作然后实现从AuthMethod扩展的类并验证方法(可能还有挑战方法)。之后,您可以将该类作为行为添加到所有控制器(或者甚至更好地使所有控制器从具有该行为的一个控制器继承)。

Plase看一下这个链接:http://www.yiiframework.com/doc-2.0/guide-rest-authentication.html