我正在使用LexikJWTBundle来验证symfony2REST API的离子angularjs应用程序。
我的问题是,当我尝试对用户进行身份验证时,Symfony会返回:找不到POST / api / login_check的路由。
EDIT 我已经将路由放在我的休息路由文件中,因此生成的路由是/ api / api / login_check。 现在错误是:找不到路径" / api / login_check"的控制器。 看起来LexikJWTBundle并没有拦截这个电话。 结束编辑
我确切地知道我的api在没有身份验证的情况下工作正常,并且使用CORS虽然是NelmioCorsBundle。
这是我的routing.yml部分:
api_login_check:
path: /api/login_check
这是我的config.yml
lexik_jwt_authentication:
private_key_path: %kernel.root_dir%/var/jwt/private.pem # ssh private key path
public_key_path: %kernel.root_dir%/var/jwt/public.pem # ssh public key path
pass_phrase: 'passphrase' # ssh key pass phrase
token_ttl: 86400 # token ttl - defaults to 86400
这是我的security.yml:
# app/config/security.yml
security:
encoders:
FOS\UserBundle\Model\UserInterface: sha512
providers:
fos_userbundle:
id: fos_user.user_provider.username_email
firewalls:
dev:
pattern: ^/{_{profiler|wdt}}/
security: false
switch_user: true
main:
pattern: .*
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
switch_user: true
# JWT SETUP
login:
pattern: ^/api/login
stateless: true
anonymous: true
form_login:
check_path: /api/login_check
username_parameter: username
password_parameter: password
success_handler: lexik_jwt_authentication.handler.authentication_success
failure_handler: lexik_jwt_authentication.handler.authentication_failure
require_previous_session: false
# JWT SETUP
api:
pattern: ^/api
stateless: true
lexik_jwt:
authorization_header:
enabled: true
prefix: Bearer
query_parameter:
enabled: true
name: bearer
access_control:
# JWT SETUP
- { path: ^/api/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/api, roles: IS_AUTHENTICATED_FULLY }
答案 0 :(得分:1)
要使用表单登录,您需要创建check_path
路由。路径必须指向空控制器,并由安全系统拦截。
只需为/api/login_check
创建一个空控制器,并将api_login_check
路由指向它。
此信息位于以下文档中。
答案 1 :(得分:0)
您需要确保通过 HEADER 'content-type': 'application/json'
发送 POST 请求,并且数据必须使用 JSON