Проблема с удержанием API сеанса на Symfony от клиента - PullRequest
0 голосов
/ 16 января 2019

Я делаю API с Symfony и пытался внедрить систему аутентификации, чтобы ограничить использование какого-либо маршрута.

С Почтальоном я могу войти как пользователь, после этого я могу использовать ограниченный маршрут для пользователя, и он работает, он возвращает мне токен:

[Результат почтальона] [1]

но когда я пытаюсь установить соединение с моим клиентом (в js), логирование возвращает мне сообщение об успехе с моим токеном:

    Succes 
Object { token: "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpYXQiOjE1NDc2NDI1OTgsImV4cCI6MTU0NzY0NjE5OCwicm9sZXMiOlsiUk9MRV9BRE1JTiJdLCJ1c2VybmFtZSI6ImFkbWluQGFkbWluLnJvb3QifQ.XK3DRjxom1AwJe7hCh7xM43Y1SbpHrRNvSmu26oH_c0xJib5Rp3AkVcoY6-F8Flb3R3dICs4OPqckhCtT-GbPFO5WjFamCXhVEKQd5m3s90Kbsb0e3WPtbpuzfMdZzYf5QTRnydugzzhtb4HPzKch94zDDyEoTc-NbgwQSjycXW3NN8b_gWjKquUjwvIopyYtHlc3rsQKZp6pWbT-MZ0GvcpVHCQb0ce-yXYOwJb92qmPMh0pUFuTZWt33SayyX0yIRjDxCWk9QM9-ZtqntojtI_z5nNWeetoFstReY9W5aGsSpmXV-HD3xNftWsDfnKxv07mnvQ_GrNtgWtcRQ-2oTmdvV-0Sxkw_fNLnwjyUrF8wL38aEH7q7E2yXhtH5lLj_lXmf64o0DXih6Po6JlXDB4KTLKdpWvzIGAu0-R0atYyAnW14H-OjUIvdkN2q_3DZQ2F6VUJHrb0GAb04QUufrSbXVrWuZcD7PMuaw7iks8jpa6y6DuSiPKeE721OdKr3j5CWXXZ6htQ5sQT01FrZEcnY9ojT302AodkHFmSiqgUmpvQpNwSFhEfwWJQDDJY835Y7SyN-rwLprTaWgrWxiCa7E21PkWLD9f-9KZzwrHjWdN9Os_Tu2_oA2cGcBVzp7vG3Vo2iyn6SNFb075U4MiVMSWvGkcYuf2_Mav04" }

Но когда я пытаюсь использовать ограниченный маршрут для пользователя, после этого я не могу. У меня есть это:

Success: 
{"error":{"code":401,"message":"Unauthorized","exception":[{"message":"Full authentication is required to access this resource.","class":"Symfony\\Component\\HttpKernel\\Exception\\HttpException","trace":[{"namespace":"","short_class":"","class":"","type":"","function":"","file":"/home/nolan/testprojetphp/php-projet-lp/vendor/symfony/security-http/Firewall/ExceptionListener.php","line":175,"args":[]},{"namespace":"Symfony\\Component\\Security\\Http\\Firewall","short_class":"ExceptionListener","class":"Symfony\\Component\\Security\\Http\\Firewall\\ExceptionListener","type":"->","function":"startAuthentication","file":"/home/nolan/testprojetphp/php-projet-lp/vendor/symfony/security-http/Firewall/ExceptionListener.php","line":130,"args":[["object","Symfony\\Component\\HttpFoundation\\Request"],["object","Symfony\\Component\\Security\\Core\\Exception\\InsufficientAuthenticationException"]]},{"namespace":"Symfony\\Component\\Security\\Http\\Firewall","short_class":"ExceptionListener","class…

обычный запрос от моего клиента выглядит так:

function ajaxSupprimer(url) {
fetch(url, {
    method: 'DELETE',
}).then(refresh);

вот мой файл безопасности:

security:
encoders:
    App\Entity\Ussers: bcrypt

providers:
    our_db_provider:
        entity:
            class: App\Entity\Ussers
            property: email
firewalls:

    login:
        pattern:  ^/
        stateless: true
        anonymous: true
        json_login:
            check_path:               /login
            success_handler:          lexik_jwt_authentication.handler.authentication_success
            failure_handler:          lexik_jwt_authentication.handler.authentication_failure
        logout:
            path: security_logout
    api:
        pattern:   ^/
        stateless: true
        lexik_jwt:
            authorization_header: # check token in Authorization Header
                enabled: true
                prefix:  Bearer
            throw_exceptions:  false     # When an authentication failure occurs, return a 401 response immediately
            create_entry_point:      true      # When no authentication details are provided, create a default entry point that returns a 401 response
            authentication_provider: lexik_jwt_authentication.security.authentication.provider

role_hierarchy:
    ROLE_ADMIN:     ROLE_USER

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

access_control:
    # Les regles de securité
    # Là dans ce cas seul les utilisateurs ayant le rôle ROLE_ADMIN
    # peuvent acceder à toutes les pages commençant par /admin
    - { path: '^/admin', roles: ROLE_ADMIN }
    - { path: '^/user', roles: ROLE_USER }

1 Ответ

0 голосов
/ 16 января 2019

Я решаю проблему с

запрос в этом случае может быть function ajaxSupprimer(url) { fetch(url, { method: 'DELETE', headers: new Headers({ ''Authorization': 'Bearer '+mytoken, 'Content-Type': 'application/json' }), }).then(refresh);

Я видел, что для провайдера аутентификации, который вы используете, ключ 'Авторизация'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...