0

文書化されたセットアップで API プラットフォームをセットアップしようとしています。

https://api-platform.com/docs/core/jwt/

次の方法でフィクスチャをロードしました。

#src/DataFixtures/AppFixtures.php
private function loadUsers(ObjectManager $manager)
{
    $users = $this->getUserData();

    foreach ($users as $user) {
        $_user = new User();
        $_user->setUsername($user['username']);
        $_user->setPassword($user['password']);
        $_user->setEmail($user['email']);
        $_user->setPassword($this->passwordEncoder->encodePassword($_user, $user['password']));

        $manager->persist($_user);
    }

    $manager->flush();
}

private function getUserData()
{
    $users = array(
        ['first_name'=>'John','last_name'=>'Doe','username'=>'johndoe','email'=>'johndoe@gmail.com','password'=>'test'],

    return $users;
}

私の security.yml は次のようになります。

security:
encoders:
    App\Entity\User:
        algorithm: bcrypt

role_hierarchy:
    ROLE_READER: ROLE_USER
    ROLE_ADMIN: ROLE_READER

providers:
    jwt_user_provider:
        entity:
            class: App\Entity\User

firewalls:
    login:
        pattern:  ^/api/login
        stateless: true
        anonymous: true
        form_login:
            check_path:               /api/login_check
            success_handler:          lexik_jwt_authentication.handler.authentication_success
            failure_handler:          lexik_jwt_authentication.handler.authentication_failure
            require_previous_session: false

    api:
        pattern:   ^/api
        stateless: true
        guard:
            authenticators:
                - lexik_jwt_authentication.jwt_token_authenticator

    dev:
        pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false

access_control:
    - { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }

今、私はトークンを取得しようとします:

curl -X POST http://localhost:8000/api/login_check -d _username=johndoe -d _password=test

しかし、非json応答を取得しています。どこかでメッセージを見つけます:

my-imac:project-folder measauser$ curl -X POST http://localhost:8000/api/login_check -d _username=johndoe@gmail.com -d _password=test

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <meta name="robots" content="noindex,nofollow" />
    <meta name="viewport" content="width=device-width,initial-scale=1" />
    <title>    Failed to load private key &quot;/Users/measauser/Sites/project-folder/config/jwt/private.pem&quot;: 
 06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt
 0906A065:PEM routines:PEM_do_header:bad decrypt (500 Internal Server Error)

これは私の .env ファイルです:

###> lexik/jwt-authentication-bundle ###
# Key paths should be relative to the project directory
JWT_PRIVATE_KEY_PATH=config/jwt/private.pem
JWT_PUBLIC_KEY_PATH=config/jwt/public.pem
JWT_PASSPHRASE=42761e3ad1eb66faf082ac0763e46a2d
###< lexik/jwt-authentication-bundle ###

1) このメッセージが実際に json にないのはなぜですか?

2) なぜこのエラーが発生するのですか?

3) ブラウザに {"code":401,"message":"JWT Token not found"} というメッセージが表示されるため、ドキュメントにアクセスできません。

誰か助けてくれませんか?

更新: 2) の場合、.env の JWT_PASSPHRASE が、入力したパスフレーズと正しく一致していないようです。ということで、この部分は解決しました。

4

0 に答える 0