| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 | 
							- <?php
 
- /**
 
-  * Created by PhpStorm.
 
-  * User: nodelog
 
-  * Date: 2020/6/20
 
-  * Time: 16:38
 
-  */
 
- namespace api\common\behaviors;
 
- use Yii;
 
- use yii\filters\auth\AuthMethod;
 
- use yii\web\UnauthorizedHttpException;
 
- class QueryParamAuth extends AuthMethod
 
- {
 
-     public $forceAuth = true;//是否强制验证,false则只登录,不关心是否成功
 
-     public $tokenParam = 'token';
 
-     /**
 
-      * @inheritdoc
 
-      */
 
-     public function authenticate($user, $request, $response)
 
-     {
 
-         $accessToken = $request->headers->get($this->tokenParam);
 
-         if (is_string($accessToken)) {
 
-             $identity = $user->loginByAccessToken($accessToken, get_class($this));
 
-             if ($identity !== null) {
 
-                 return $identity;
 
-             }
 
-         }
 
-         if ($accessToken !== null && $this->forceAuth) {
 
-             $this->handleFailure($response);
 
-         }
 
-         return null;
 
-     }
 
-     /**
 
-      * @param $action
 
-      * @return bool
 
-      * @throws UnauthorizedHttpException
 
-      * @author nodelog
 
-      */
 
-     public function beforeAction($action)
 
-     {
 
-         $response = $this->response ? : Yii::$app->getResponse();
 
-         try {
 
-             $identity = $this->authenticate(
 
-                 $this->user ? : Yii::$app->getUser(),
 
-                 $this->request ? : Yii::$app->getRequest(),
 
-                 $response
 
-             );
 
-         } catch (UnauthorizedHttpException $e) {
 
-             if ($this->isOptional($action) || !$this->forceAuth) {
 
-                 return true;
 
-             }
 
-             throw $e;
 
-         }
 
-         if ($identity !== null || $this->isOptional($action) || !$this->forceAuth) {
 
-             return true;
 
-         } else {
 
-             $this->challenge($response);
 
-             $this->handleFailure($response);
 
-             return false;
 
-         }
 
-     }
 
- }
 
 
  |