繁体   English   中英

Symfony LexikJWTAuthenticationBundle无法验证

[英]Symfony LexikJWTAuthenticationBundle Unable to authenticate

我在Symfony 3上遇到JWT Auth捆绑包的问题。我已经按照他们的github自述文件中的说明进行操作,但似乎无法弄清楚哪里出了问题或出了什么问题。

我正在使用LexikJWTAuthenticationBundle 2.0和FriendsofSymfony userbundle的Symfony 3.1.1。

问题:每当我尝试按照其示例中的说明通过(使用用户名和密码替换)登录时:

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

我得到:

{"code":401,"message":"Bad credentials"}

如果我通过以下方式手动生成令牌:

        $jwtManager = $this->container->get('lexik_jwt_authentication.jwt_manager');
    $userManager = $this->container->get('fos_user.user_manager');
    $user = $userManager->findUserByEmail('emailhere');
    dump($jwtManager->create($user));

我得到了一个很长的令牌。 然后在邮递员中将其用作具有“授权”键值的标头:“载体”

然后,我尝试在防火墙URL下调用终结点,并触发failure_handler。 它设法从令牌中提取数据,即我在令牌中编码的电子邮件,依此类推。 但是我总是失败。

我的其他数据是:

security.yml安全性:编码器:FOS \\ UserBundle \\ Model \\ UserInterface:bcrypt

role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: ROLE_ADMIN


# http://symfony.com/doc/current/book/security.html#where-do-users-come-from-user-providers
providers:
    in_memory:
        memory: ~
    fos_userbundle:
        id: fos_user.user_provider.username
        firewalls:
    # disables authentication for assets and the profiler, adapt it according to your needs
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    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
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            # csrf_token_generator: security.csrf.token_manager

        logout:       true
        anonymous:    true

配置文件

lexik_jwt_authentication:
private_key_path: %jwt_private_key_path%
public_key_path:  %jwt_public_key_path%
pass_phrase:      %jwt_key_pass_phrase%
token_ttl:        %jwt_token_ttl%
# key under which the user identity will be stored in the token payload
user_identity_field: email

# token encoding/decoding settings
encoder:
    # token encoder/decoder service - default implementation based on the namshi/jose library
    service:            lexik_jwt_authentication.encoder.default
    # crypto engine used by the encoder service
    crypto_engine:  openssl
    # encryption algorithm used by the encoder service
    signature_algorithm: RS256

# token extraction settings
token_extractors:
    authorization_header:      # look for a token as Authorization Header
        enabled: true
        prefix:  Bearer
        name:    Authorization
    cookie:                    # check token in a cookie
        enabled: false
        name:    BEARER
    query_parameter:           # check token in query string parameter
        enabled: false
        name:    bearer

routing.yml

api_login_check:
path: /api/login_check

如果有人有任何建议,请告诉我。 我为此感到难过。

您需要删除内存用户提供程序:

providers:
    fos_userbundle:
         id: fos_user.user_provider.username

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM