2018-10-21 16:48:03 2649次浏览 4条回答 1 悬赏 10 金钱
public function behaviors()
{
    $behaviors = parent::behaviors();
    $behaviors['authenticator'] = [
        'class' => QueryParamAuth::className(),
    ];
    return $behaviors;
}

这个 QueryParamAuth 貌似只能验证 GET 列如:http://127.0.0.1/top/index?access-token=asdsadsadsadsad

我想问,如果是POST 提交呢? 我应该怎么验证呢?

看了源代码是这样的

class QueryParamAuth extends AuthMethod
{
    /**
     * @var string the parameter name for passing the access token
     */
    public $tokenParam = 'access-token';


    /**
     * @inheritdoc
     */
    public function authenticate($user, $request, $response)
    {

        $accessToken = $request->get($this->tokenParam);
        if (is_string($accessToken)) {
            $identity = $user->loginByAccessToken($accessToken, get_class($this));
            if ($identity !== null) {
                return $identity;
            }
        }
        if ($accessToken !== null) {
            $this->handleFailure($response);
        }

        return null;
    }
}

只获取get。请问post之类的请求怎么设置呢??

最佳答案

  • abei1982 发布于 2018-10-22 10:08 举报

    即便是POST请求,你也可以在url中放入参数的嘛。

    当然我其实更喜欢使用HttpBearerAuth的方式,每次将token放到header里,很方便,也方便做集成。

    // 微信小程序为例
    header: {
        'content-type': 'multipart/form-data',
        'Authorization': 'Bearer ' + token
    },
    

    阿北哥ya

    , , 觉得很赞
  • 回答于 2018-10-21 22:08 举报

    并不是这样,其他也是可以的,况且你可以使用HttpBearerAuth

  • 回答于 2018-10-22 09:32 举报

    判断POST有没有 access-token,然后设置强制设置 get参数
    Yii::$app->request->setQueryParams($values) //设置URL GET参数 $values是数组

  • 回答于 2018-10-22 09:38 举报
    1. public $tokenParam = 'access-token';
    2. $post = Yii::$app->request->getBodyParams();
      // 请求合法性检查
      $access_token = $post[$this->tokenParam];
    3. 下面就是验证token有效性自己写吧
    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
少年侠气
见习主管

少年侠气

注册时间:2018-10-20
最后登录:2019-08-30
在线时长:6小时20分
  • 粉丝0
  • 金钱210
  • 威望20
  • 积分470

热门问题