首页 > 解决方案 > 如果登录,Symfony 跳过 API 的 JWT 身份验证

问题描述

我的 symfony 5 项目有一个与安全相关的问题。

我用 hwiOAuthBundle 保护了主页,用 lexik jwt 保护了 API。

我的目标是,在浏览器中经过身份验证的用户可以在没有 jwt 的情况下访问 api,我该如何存档?

这是我的security.yaml:

firewalls:
  dev:
    pattern: ^/(_(profiler|wdt)|css|images|js)/
    security: false
  api_login:
    pattern: ^/api/login$
    stateless: true
    anonymous: true
    provider: in_memory
    json_login:
      check_path: /api/login
      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
    provider: in_memory
    guard:
      authenticators:
        - 'App\Security\MyAuthenticator'
    entry_point: 'App\Security\MyAuthenticator'
  main:
    anonymous: ~
    provider: hwi
    logout:
      path: app_logout
    oauth:
      resource_owners:
        google: "/login/check-google"
      login_path: /login
      use_forward: false
      failure_path: /login
      default_target_path: /
      oauth_user_provider:
        service: 'App\Security\GoogleOAuthUserProvider'
access_control:
  - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
  - { path: ^/api/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
  - { path: ^/api, role: IS_AUTHENTICATED_FULLY }
  - { path: ^/, roles: IS_AUTHENTICATED_FULLY }

有任何想法吗?提前致谢。

标签: phpsymfony

解决方案


推荐阅读