yii Auth 自定義

在yii 開發中一個項目內實現多個不一樣的user Auth 認證app

 

首先把不須要此認證的模塊控制器過濾掉yii

public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    '*' => ['POST'],
                ],
            ],
            'bearerAuth' => [
                'class' => UserAuth::className(),
                'except' => [
                    'carray/*',
                    'sys/login',
                ],
                'exceptModules' => true
            ]
        ];
    }

 

新建一個認證 ; 重寫authenticate;ide

從新定義identityClass
在須要的模塊或者模型中從新寫入 
behaviors;
/**
     * {@inheritDoc}
     */
    public function authenticate($user, $request, $response)
    {
        $authHeader = $request->getHeaders()->get($this->header);

        if ($authHeader !== null) {
            if ($this->pattern !== null) {
                if (preg_match($this->pattern, $authHeader, $matches)) {
                    $authHeader = $matches[1];
                } else {
                    return null;
                }
            }

            Yii::$app->user->identityClass = MemberModel::className();
            $identity = $user->loginByAccessToken($authHeader, get_class($this));

            if ($identity === null) {
                $this->challenge($response);
                $this->handleFailure($response);
            }

            return $identity;
        }

        return null;
    }
相關文章
相關標籤/搜索