小编con*_*ind的帖子

Symfony 5 ApiKeyAuthenticator 与 SelfValidatingPassport

我正在开发一个新的 Symfony 5.3.6 项目,并希望基于新系统实施身份验证,如下所示:

\n
\n

https://symfony.com/doc/current/security/authenticator_manager.html#creating-a-custom-authenticator

\n
\n

我没有任何用户,只想检查发送的 api 令牌是否正确,因此在实现此方法时:

\n
public function authenticate(Request $request): PassportInterface\n{\n    $apiToken = $request->headers->get(\'X-AUTH-TOKEN\');\n\n    if (null === $apiToken) {\n        // The token header was empty, authentication fails with HTTP Status Code 401 "Unauthorized"\n        throw new CustomUserMessageAuthenticationException(\'No API token provided\');\n    }\n\n    return new SelfValidatingPassport(new UserBadge($apiToken));\n}\n\n
Run Code Online (Sandbox Code Playgroud)\n

具体在哪里进行检查?我是否忘记在某个地方实现另一个类?

\n

如果我保留代码,它会直接进入onAuthenticationFailure.

\n

据我所知,我可以使用属性来实现 Users/UserProvider $apiToken,然后系统将检查数据库条目是否与请求中的令牌相对应。但我没有用户。

\n

没有用户应该是可以的,因为在上面的 URL 上,它说:

\n
\n

自助验证护照

\n

如果您不需要检查任何凭据(例如,使用 API\ntokens 时),您可以使用 \nSymfony\\Component\\Security\\Http\\Authenticator\\Passport\\SelfValidatingPassport。\ n此类仅需要 UserBadge 对象和可选的 Passport\nBadges。

\n
\n …

php authentication api-key symfony symfony5

12
推荐指数
2
解决办法
5478
查看次数

标签 统计

api-key ×1

authentication ×1

php ×1

symfony ×1

symfony5 ×1