JWT cakephp auth不在生产中工作

时间:2015-11-14 18:59:39

标签: cakephp-3.0 production-environment jwt unauthorized

您好,我在生产服务器上使用Cakephp 3.x应用程序进行ADmad / JwtAuth.Jwt身份验证时遇到问题。

我已经在几个开发环境中安装了我的Cakephp应用程序,并且正如预期的那样工作。当我尝试在网络托管服务上运行它时,我的问题出现了。我已经尝试了两个,在他们两个上获得相同的401(未授权)错误(ehost和dreamhost)

他设置的堡垒我遵循了本教程:http://www.bravo-kernel.com/2015/04/how-to-add-jwt-authentication-to-a-cakephp-3-rest-api/

就像我在当地和开发环境中说的那样完美。那么有没有其他人认为网络托管需要使这个教程有效?有什么建议吗?

1 个答案:

答案 0 :(得分:1)

通过添加“sub”属性来解决。

https://tools.ietf.org/html/rfc7519#section-4.1.2

public function token()
{
    $user = $this->Auth->identify();

    if (!$user) {
        throw new UnauthorizedException('Invalid username or password');
    }

    $this->set([
        'success' => true,
        'data' => [
            'token' => $token = JWT::encode(
                [
                    'id' => $user['id'],
                    'sub' => $user['id'],
                    'exp' => time() + 604800,
                    'iat' => time()
                ],
                Security::salt()
            )
        ],
        '_serialize' => ['success', 'data']
    ]);
}