gpt4 book ai didi

api - 在 Symfony2 上通过外部 API 配置用户身份验证的问题

转载 作者:行者123 更新时间:2023-12-05 01:20:55 25 4
gpt4 key购买 nike

我在为我的新 Symfony2 应用程序验证用户时遇到问题。

此应用程序通过 API 获取所有信息,因此不使用数据库。当用户进入登录页面时,他在登录表单中输入用户名和密码。然后,我必须使用 API 调用对他进行身份验证。如果不是用户,此 API 调用将返回“false”,如果是正确的用户,则返回 token key 和 token secret 。有了这个 token key 和 secret ,在用户 session 期间,我可以发出呈现应用程序所有页面所需的所有 API 请求。一旦用户 session 结束并且 token key 和 secret 被删除,用户必须重新登录。

我真的不知道我是如何实现的。我读了这个http://symfony.com/doc/current/cookbook/security/custom_provider.htmlhttp://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html ,我仍然很迷茫...... :(

谁能帮帮我?

非常感谢:)

最佳答案

如果您想编写自定义身份验证,您已经找到了正确的链接。作为示例,您可以看到 OAuth 授权的实现 HWIOAuthBundle .但请记住,这种类型的身份验证会在您的系统上创建一个用户。如果不使用数据库,则每次用户发送请求时都必须向 API 发出请求。

首先你需要明白没有魔法。在每个请求上,symfony 检查 url 是否与指定的防火墙之一匹配(参见 secutity.yml)。您可以在防火墙工厂中看到触发的监听器。如果找到匹配项,操作将切换到相应的 AuthenticationListener。 .监听器尝试通过创建发送到 AuthenticationProvider 的 token 来验证凭据

$this->authenticationManager->authenticate(new UsernamePasswordToken($username, $password, $this->providerKey));

在 AuthenticationProvider 中

public function authenticate(TokenInterface $token) {
...
}

AuthenticationProvider 尝试通过 UserProvider 获取用户。如果成功,Token 存储在 session 中。在随后的请求中,ContextListener 首先发挥作用,检查 session ,提取 token 并将其发送给类似的 AuthenticationProvider。

一般来说,该方案看起来是这样的。您可以在检查 Symfony 安全组件的源代码中找到更多信息。

真正好的起点是UsernamePasswordFormAuthenticationListener .它只是从请求中获取登录名和密码,并生成最简单的 UsernamePasswordToken。

protected function attemptAuthentication(Request $request)
{
...
}

祝你好运!

关于api - 在 Symfony2 上通过外部 API 配置用户身份验证的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14264066/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com