在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
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; }