2019-09-22 10:36:14 2005次浏览 2条回答 0 悬赏 10 金钱

restful按照教程全部搭建完毕,授权时推荐设置这个:

'enableSession' => false,

但是这样就会导致开启速率限制的时候,找不到用户信息,yii\web\user

public function getIdentity($autoRenew = true)
{
    if ($this->_identity === false) {
        if ($this->enableSession && $autoRenew) {
            try {
                $this->_identity = null;
                $this->renewAuthStatus();
            } catch (\Exception $e) {
                $this->_identity = false;
                throw $e;
            } catch (\Throwable $e) {
                $this->_identity = false;
                throw $e;
            }
        } else {
            return null;//session不打开用户信息为空,则无法启用速率限制
        }
    }
    return $this->_identity;
}

老师能指点下吗?我现在就是把 session 打开就解决这个问题了

  • 回答于 2019-09-22 21:18 举报

    既然都 restful 了,肯定不应该在使用 基于 session 的用户认证模式了,建议你看下权威指南的这一章
    https://www.yiiframework.com/doc/guide/2.0/zh-cn/rest-authentication

    1 条回复
    回复于 2019-09-23 09:32 回复

    这个过程是这样的:我restful是关掉了session,但是开启速率限制的时候,无法生效,我跟了一下速率限制的代码,发现他要去找用户信息,只有session打开的时候才能找到信息,这就和restful的那个矛盾了。所以我想知道,这个冲突该怎么去解决呢?能指点一下嘛?

  • 回答于 2019-09-23 12:40 举报

    从我贴的那个链接中 截两段话
    图1:
    1.png
    认证状态不能保持,每一次请求都是通过 access token 实时认证的

    图2:
    2.png
    认证成功后 才会进行频率限制,所以 RateLimit 类的这个方法中

    public function beforeAction($action)
        {
            if ($this->user === null && Yii::$app->getUser()) {
                $this->user = Yii::$app->getUser()->getIdentity(false);
            }
    
            if ($this->user instanceof RateLimitInterface) {
                Yii::debug('Check rate limit', __METHOD__);
                $this->checkRateLimit($this->user, $this->request, $this->response, $action);
            } elseif ($this->user) {
                Yii::info('Rate limit skipped: "user" does not implement RateLimitInterface.', __METHOD__);
            } else {
                Yii::info('Rate limit skipped: user not logged in.', __METHOD__);
            }
    
            return true;
        }
    

    并不会进入第一个 if 判断

    觉得很赞
您需要登录后才可以回答。登录 | 立即注册
沃毕尼闷兜率
助理

沃毕尼闷兜率

注册时间:2017-05-08
最后登录:2020-01-06
在线时长:11小时20分
  • 粉丝1
  • 金钱30
  • 威望0
  • 积分140

热门问题