我正在开发一个新的 Symfony 5.3.6 项目,并希望基于新系统实施身份验证,如下所示:
\n\n\nhttps://symfony.com/doc/current/security/authenticator_manager.html#creating-a-custom-authenticator
\n
我没有任何用户,只想检查发送的 api 令牌是否正确,因此在实现此方法时:
\npublic 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\nRun Code Online (Sandbox Code Playgroud)\n具体在哪里进行检查?我是否忘记在某个地方实现另一个类?
\n如果我保留代码,它会直接进入onAuthenticationFailure.
据我所知,我可以使用属性来实现 Users/UserProvider $apiToken,然后系统将检查数据库条目是否与请求中的令牌相对应。但我没有用户。
没有用户应该是可以的,因为在上面的 URL 上,它说:
\n\n\n …自助验证护照
\n如果您不需要检查任何凭据(例如,使用 API\ntokens 时),您可以使用 \nSymfony\\Component\\Security\\Http\\Authenticator\\Passport\\SelfValidatingPassport。\ n此类仅需要 UserBadge 对象和可选的 Passport\nBadges。
\n