我有一个 Symfony 应用程序,它有两个主要部分。 /(根下的所有内容eg /userProfile)和/api/(/api路由下的所有内容eg /api/userInfo/3)。
我正在使用 Twig 在根目录下渲染实际页面,并JsonResponse在/api. 目前,当用户在未登录的情况下尝试访问任何页面/资源时,他们会被重定向到/login他们请求的页面/资源。
我想为/api. 我想做的/api/whatever是返回请求的资源(如果已登录),或者如果未登录则返回 401。我想继续重定向到/login所有其他路由。
(注意:/api路由本身并不是“RESTful”API 路由。它们是 UI 用来请求呈现各种页面所需的数据的“内部”API 路由。因此可以安全地假设用户会通过以下方式登录在他们的客户请求这些路由之一之前的正常登录表单。)
这是我的security.yaml:
security:
providers:
db_provider:
id: database_user_provider
encoders:
App\Utility\Security\DatabaseUser: bcrypt
access_decision_manager:
strategy: unanimous
allow_if_all_abstain: false
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main:
pattern: ^/
context: main
form_login:
provider: db_provider
login_path: login
check_path: process_login
default_target_path: manage
use_referer: true
failure_handler: App\Utility\Security\AuthenticationFailureHandler
user_checker: App\Utility\Security\UserChecker
anonymous: ~
logout:
path: logout
target: login
access_denied_handler: App\Utility\Security\AccessDeniedHandler #Turn this off in dev.
# Easy way to control access for large sections of your site
# Note: Only the *first* access control that matches will be used
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/forgot, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/register, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/%app.locales%, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_USER }
如果我不包括login_path和 ,Symfony 会抱怨check_path。
那么,我如何告诉 Symfony 在用户未登录(或会话已过期)时简单地失败并返回 401,何时(且仅当)他们访问/api.
繁星coding
一只萌萌小番薯