zoukankan      html  css  js  c++  java
  • yii Auth 自定义

    在yii 开发中一个项目内实现多个不同的user Auth 认证

     

    首先把不需要此认证的模块控制器过滤掉

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

     

    新建一个认证 ; 重写authenticate;

    重新定义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;
        }

     

  • 相关阅读:
    BZOJ 3677 连珠线
    BZOJ 3676 回文串
    BZOJ 3675 序列分割
    BZOJ 4013 实验比较
    BZOJ 4011 落忆枫音
    使用Google BBR加速 VPS
    OSX编译安装Python3及虚拟开发环境Virtualenv
    OSX安装Mysql8.0
    OpenSSL编程之摘要
    OpenCA搭建
  • 原文地址:https://www.cnblogs.com/sw-3/p/11199836.html
Copyright © 2011-2022 走看看