|
yiifiltersauthQueryParamAuth类认定的token参数是 access-token,我们可以在行为中修改下
[
'class' => QueryParamAuth::className(),'tokenParam' => 'token','optional' => [
'login','signup-test'
],]
] );
}
这里将默认的access-token修改为token。
我们在配置文件的urlManager组件中增加对userProfile操作
[
'POST login' => 'login','GET user-profile' => 'user-profile',]
我们用postman模拟请求访问下 /v1/users/user-profile?token=apeuT9dAgH072qbfrtihfzL6qDe_l4qz_1479626145发现,抛出了一个异常
"findIdentityByAccessToken" is not implemented.
这是怎么回事呢?
我们找到 yiifiltersauthQueryParamAuth 的authenticate方法,发现这里调用了 commonmodelsUser类的loginByAccessToken方法,有同学疑惑了,commonmodelsUser类没实现loginByAccessToken方法为啥说findIdentityByAccessToken方法没实现?如果你还记得commonmodelsUser类实现了yiiwebuser类的接口的话,你应该会打开yiiwebUser类找答案。没错,loginByAccessToken方法在yiiwebUser中实现了,该类中调用了commonmodelsUser的findIdentityByAccessToken,但是我们看到,该方法中通过throw抛出了异常,也就是说这个方法要我们自己手动实现!
这好办了,我们就来实现下commonmodelsUser类的findIdentityByAccessToken方法吧
return static::findOne(['api_token' => $token,'status' => self::STATUS_ACTIVE]);
// throw new NotSupportedException('"findIdentityByAccessToken" is not implemented.');
}
验证完token的有效性,下面就要开始实现主要的业务逻辑部分了。
$user->id,'username' => $user->username,'email' => $user->email,];
}
服务端返回的数据类型定义 (编辑:网站开发网_安阳站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|