我遇到了Symfony 3上JWT Auth包的問題。我按照他們的github自述文件中的說明進行了操作,但似乎無法找出我出錯的地方或什麼是出錯了。Symfony LexikJWTAuthenticationBundle無法進行身份驗證
我使用Symfony 3.1.1,使用LexikJWTAuthenticationBundle 2.0 和FriendsofSymfony userbundle。
問題: 每當我嘗試登錄爲通過指示在他們的榜樣(以用戶名和密碼取代):
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));
我得到了相當長的令牌。然後在postman中使用它作爲標題爲「授權」值的標題:「承載」
然後我嘗試在防火牆url下調用端點,並觸發failure_handler。它設法從令牌中提取數據,即我在令牌中編碼的電子郵件等等。但我總是失敗。
我的另一個數據是:
security.yml 安全: 編碼器: FOS \ UserBundle \型號\的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
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
路由.yml
api_login_check:
path: /api/login_check
如果有人有任何建議,請讓我知道。我很難過這個。
完美。不知道爲什麼in_memory配置在那裏。謝謝! – Greg