2015-04-17 121 views
0

我用作曲器从https://github.com/firebase/php-jwt安装了php-jwt。带有Zend 2.0的Firebase PHP-JWT无法加载模块

我现在有了位于vendor \ firebase \ php-jwt \ Firebase \ PHP-JWT的库,该目录的内容与git上的相同。

在application.config.php

我有:

'modules' => array(
    // 'ZendDeveloperTools', 
    'DoctrineModule', 
    'DoctrineORMModule',   
    'JWT' 
), 

在autoload_namespaces.php我有:

'JWT\\' => array($vendorDir . '/firebase/php-jwt/Firebase'), 

autoload_classmap.php:

'JWT' => $vendorDir . '/firebase/php-jwt/Firebase/PHP-JWT/Authentication/JWT.php', 

错误:

Fatal error: Uncaught exception 'Zend\ModuleManager\Exception\RuntimeException' with message 'Module (JWT) could not be initialized.' in \vendor\zendframework\zendframework\library\Zend\ModuleManager\ModuleManager.php on line 175 

我不知道我做错了什么。

回答

1

php-jwt lib不是ZF2模块,因此无法将其加载为zf2模块。使用时只需将JWT LIB你的模块(从ZF2骨架的应用程序如应用模块)在

+0

对我来说,我已经做到了,谢谢你的回答。我是zend的新手,很棘手,因为作曲家和其他模块一起安装了它。 – Alex7

2

我们可以从AuthController如同直接使用JWT:

在顶部:

use Firebase\JWT\JWT; 

然后创建一个功能生成JWT令牌,如:

public function generateAuthToken($userData, $data) { 
     if(password_verify($data['password'], $userData['hashPassword'])) { 
      $tokenId = base64_encode(mcrypt_create_iv(32)); 
      $issuedAt = time(); 

      $data = [ 
       'iat' => $issuedAt,   // Issued at: time when the token was generated 
       'jti' => $tokenId,   // Json Token Id: an unique identifier for the token 
       'data' => $userData 
      ]; 

      $jwt = JWT::encode($data, 'testKey', self::JWT_ALGO); //use self::JWT_ALGO => HS512 
      $unencodedArray = ['jwt' => $jwt]; 
      return json_encode($unencodedArray); 
     } 
    } 

而且使用下面的函数来检查和解码令牌:

public function checkAuthToken($data) { 
     $request = $this->getRequest(); 
     $authHeader = $request->getHeader('Authorization'); 

     if($authHeader) { 
      list($token) = sscanf($authHeader->toString(), 'Authorization: Bearer %s'); 
      if($token) { 
       try{ 
        $secretKey = 'testKey'; 
        $decryptedToken = JWT::decode($token, $secretKey, [self::JWT_ALGO]); // //use self::JWT_ALGO => HS512 
        return $decryptedToken->data; 
       } catch (\Exception $ex) { 
        return false; 
       }     
      } 
     } 
     return false; 
    }