您好,我在生产服务器上使用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/
就像我在当地和开发环境中说的那样完美。那么有没有其他人认为网络托管需要使这个教程有效?有什么建议吗?
答案 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']
]);
}