【问题标题】:how to authenticate by Token in cakephp2 with BzUtils plugin.?如何使用 BzUtils 插件在 cakephp2 中通过 Token 进行身份验证。?
【发布时间】:2015-10-21 18:43:50
【问题描述】:

我使用插件 BzUtils 插件创建令牌进行身份验证。 文件提升:

CakePlugin::load('BzUtils');

文件 AppController:

public function beforeFilter() {
        $this->Auth->authenticate = array(
            'Form' => array(
                'fields' => array(
                    'username' => 'username',
                    'password' => 'password'
                ),
                'userModel' => 'User',
                'scope' => array(
                    'User.active' => 1,
                )
            ),
            'BzUtils.JwtToken' => array(
                'fields' => array(
                    'username' => 'username',
                    'password' => 'password',
                ),
                'header' => 'AuthToken',
                'userModel' => 'User',
                'scope' => array(
                    'User.active' => 1
                )
            )
        );

RestUsersController 中的操作登录:

public function login() {
        if ($this->Auth->login()) {
            $user = $this->Auth->user();
            $token = JWT::encode($user, Configure::read('Security.salt'));
            $this->set('user', $user);
            $this->set('token', $token);
            $this->set('_serialize', array('user', 'token'));
        } else {
            throw new NotAcceptableException(__('Email or password is wrong.'));
        }
    }

网址:http://kcxcode1.dev/restusers/login

错误:致命错误:在第 42 行的 C:\xampp\htdocs\koreconx\app\Controller\RestUsersController.php 中找不到类“JWT”

【问题讨论】:

标签: php cakephp cakephp-2.0


【解决方案1】:

错误:致命错误:在

中找不到类“JWT”

错误很明显。 您需要在适配器中使用的 php-jwt 库。通过 composer 添加或手动添加。

composer require firebase/php-jwt   

我已经用这种依赖性更新了插件 composer.json,但只有 suggest 它在那里。此外,我还更新了 readme.md,在其中添加了适配器以及指向有关它的文章的链接。而且我也将develop合并到master。

看起来您正在使用my article,它在第 2 段中提到需要 php-jwt,甚至链接到它。

【讨论】:

  • 非常感谢,我会再试一次。 JWT 有支持 cakephp2 吗?
  • 我不明白这个问题。 JWT 与 Cake 无关,该库是一个独立的库,可与任何其他框架一起使用。他们彼此之间没有硬性依赖。
  • Cakephp 2 不支持加载供应商...嘿嘿。
  • 那不是真的。请参阅book.cakephp.org/2.0/en/installation/advanced-installation.html,如果您不能使用 composer(我想不出原因),请使用 App::import()。
【解决方案2】:

对不起,我错了Declaration of JwtTokenAuthenticate::getUser() should be compatible with BaseAuthenticate::getUser($request) [APP\Plugin\BzUtils\Controller\Component\Auth\JwtTokenAuthenticate.php, line 123]

【讨论】:

  • 这不是论坛,请更新您的问题或提出新问题,这是一个不同的问题。这不是一个答案。我也不明白这句话的意思。签名匹配。见api.cakephp.org/2.7/source-class-BaseAuthenticate.html#215
  • 我同意我遇到完全相同的问题的操作。尽管文章 does* 有指向 jwt-php 库的链接,但没有说明或示例说明如何将它包含在 Cake App 中。文章和示例没有提供完整的步骤(如上所述),这意味着试图将来自各种来源的代码片段拼凑在一起,这很可惜,因为这看起来是一个优雅的解决方案。
猜你喜欢
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 2023-02-06
  • 2010-11-11
  • 2016-02-10
  • 2014-10-08
相关资源
最近更新 更多