のためのトークンを要求するトークン要求を検証し、このtutorialJWT認証 - トラブル、私は私のcakephp3のREST APIにJWT認証を追加しようとしています新しく登録されたユーザー
私がいるトラブルを、次のを持って、私が作成した後に/私のUsersController.php
ファイル内のアクションを登録し、新しいユーザーを登録しました。 (私は作っているAppのタイプのために、 'Artists'という言葉を 'Users'という言葉に変更しました)。だから、新しいアーティスト(ユーザー)を登録して、私はそれが成功したと言って、そのアーティスト(ユーザー)のための私の "トークン"を与えるというステータスコードが表示されます201。私はそれをhttp://jwt.io/にブラウズし、それにトークンを貼り付けることでこれを確認しました。これも成功として私に戻ってきました。私は現在、ArtistsController.php
ファイルにJWTトークンリクエストを実装しようとしていますが、JSONがトークンを要求してアーティストの(ユーザーの)メールアドレスとパスワードを投稿しています。ここでArtistsController.php
のための私のコードは次のとおりです。それをCocoaRestClient
<?php
namespace App\Controller\Api;
use App\Controller\Api\AppController;
use Cake\Event\Event;
use Cake\Network\Exception\UnauthorizedException;
use Cake\Utility\Security;
use Firebase\JWT\JWT;
class ArtistsController extends AppController
{
public function initialize()
{
parent::initialize();
$this->Auth->allow(['add', 'token']);
}
//Artists registration
public function add()
{
$this->Crud->on('afterSave', function(Event $event) {
if ($event->subject->created) {
$this->set('data', [
'id' => $event->subject->entity->id,
'token' => JWT::encode(
[
'sub' => $event->subject->entity->id,
'exp' => time() + 604800
],
Security::salt())
]);
$this->Crud->action()->config('serialize.data', 'data');
}
});
return $this->Crud->execute();
}
//Verify Token request
public function token()
{
$artist = $this->Auth->identify();
if (!$artist) {
throw new UnauthorizedException('Invalid email or password');
}
$this->set([
'success' => true,
'data' => [
'token' => JWT::encode([
'sub' => $artist['id'],
'exp' => time() + 604800
],
Security::salt())
],
'_serialize' => ['success', 'data']
]);
}
public $paginate = [
'page' => 1,
'limit' => 500,
'maxLimit' => 500,
'contain' => ['Parlours', 'Tags']
];
}
私はその後、私のAPIにJSONデータを掲載、新しく作成されたアーティスト(ユーザー)のためにトークンを要求することにより、設定を確認しようとすると、APIテストツールを使用して表示:
資格情報は有効で正しいものの、私は、私のデータベースとコードのすべてをダブルチェックとトリプルチェックして、APIテストツールでコンマのような小さなものを残さないようにしました。私は確かに新しいアーティスト(ユーザー)を登録しました。トークンが作成され、検証されている場合でも、トークンを要求しようとする前にすべて成功しました。
誰もがこの問題を抱えていますか?
電子メールとパスワードが有効なので理論的にはうまくいくはずですが、単純にはそうではありません。
@RogarSSDに関してAppController.phpに認証コンポーネントの構成を変更した、この質問https://stackoverflow.com/に答えるために私を助けてください質問/ 47995364/how-can-we-save-registration-data-in-two-tables-with-jwt-authentication-in-cakep –