2016-12-22 14 views
0

Symfony 3でJWT Authバンドルに問題が発生しました。私はgithub READMEの指示に従ってきましたが、どこが間違っているのか分かりません。間違っている。Symfony LexikJWTAuthenticationBundle認証できません

私は、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)); 

私はかなり長いトークンを与えられる。そして、郵便配達員のそれをキー "Authorization"値を持つヘッダーとして使用してください: "Bearer"

次にファイアウォールされたURLの下でエンドポイントを呼び出すと、failure_handlerがトリガーされます。それは、トークンからデータ、すなわちトークンにコード化された電子メールなどをトークンから抽出することを管理する。しかし、私はいつも失敗する。

私の他のデータは次のとおりです。

のsecurity.yml セキュリティ: エンコーダ: FOS \ UserBundle \モデル\たUserInterface:

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 

config.yml

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 

ルーティングbcryptの.yml

api_login_check: 
path: /api/login_check 

ご意見がありましたら教えてください。私はこれで困っている。

答えて

2

あなたは、メモリのユーザープロバイダに削除する必要があります。完全に働いた

providers: 
    fos_userbundle: 
     id: fos_user.user_provider.username 
+0

。 in_memoryの設定がそこにあった理由は不明です。ありがとうございました! – Greg

関連する問題