我通过x509数字证书(预认证)识别对某些路线的访问。 为此,我将security.yml定义如下:
- security:
providers:
x509Provider_Provider:
id: x509Provider_Service
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
xes:
pattern: ^/xes
x509:
provider: x509Provider_Provider
user: "SSL_CLIENT_S_DN"
access_control:
- { path: ^/xes, roles: ROLE_ADMIN, requires_channel: https }
我从哪里获得SSL_CLIENT_S_DN,并将其用作用户名。
在提供者
中 x509Provider class implements UserProviderInterface
如果用户存在并且具有访问权限并且基于此,请咨询数据库 我创建了一个对象
**x509User class implements UserInterface, EquatableInterface**
我存储信息访问权限和其他数据。
显然它可以正常工作,在Symfony探查器中我有一个用户的角色并标记为经过身份验证。
问题是:每当我访问路由(模式:^ / XES)时,都会启动身份验证过程并访问数据库以获取角色和用户权限。
它不应该仅在第一次进行身份验证,并且在后续请求中创建会话后才会使用吗?。
我希望我已正确解释了我的问题。
问候
答案 0 :(得分:0)
如今,通过API密钥对用户进行身份验证通常很常见 (例如,在开发Web服务时)。提供API密钥 对于每个请求,并作为查询字符串参数或通过 HTTP标头。
我认为令牌是一样的。