在 Php/symfony 中检查用户身份验证

Posted

技术标签:

【中文标题】在 Php/symfony 中检查用户身份验证【英文标题】:Check user authentication In Php/symfony 【发布时间】:2016-04-04 19:40:49 【问题描述】:

我对身份验证有疑问。 身份验证方法有很多(JWT、cookies、Session),我的问题很简单,每当用户请求新资源时,客户端都会向服务器发送一些东西(例如标头中的 Jwt),但是我必须放在哪里检查 Jwt 或 cookie 或会话的代码?如果我使用 php,没有 MVC,我必须在任何时候包含类或调用一些静态方法?在 Symfony 中我必须使用事件?

【问题讨论】:

通常由中间件处理。 @ceejayoz 确切地说,我使用 node 和 express,我使用 app.use 来检查 JWT,但是我该如何在 php 和 Symfony 中做呢? 你可以在 PHP/Symfony 中做中间件。对于 Symfony,symfony.com/doc/current/cookbook/event_dispatcher/…。对于您自己的 PHP,您必须构建一个解决方案。 实际实现很大程度上取决于您的实际用例和您使用的 Symfony 版本。你能再解释一下你的情况吗? 在 Symfony 3 中,我建议您查看新的 Guard 组件,它可以更轻松地处理身份验证(参见 symfony.com/blog/… 和 knpuniversity.com/blog/guard-authentication)。关于授权,您应该阅读voters。还有一个ACL component,但在 99% 的常见用例中都不需要它。 【参考方案1】:

要在 symfony2/3 中提供默认身份验证,您可以使用本指南 http://symfony.com/doc/current/components/security/authentication.html

还有一些用于注册/授权的可用捆绑包:FOSUserBundle

有一个如何实现自定义身份验证提供者的示例:http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html

抱歉,我发布超过 2 个链接的声誉并不高...

【讨论】:

谢谢,但是每个Request都通过这些函数吗?它是如何工作的? 在标准 symfony 应用程序中,每个请求都经过所有已注册的 onKernelRequest 事件侦听器和订阅者。我不知道如何在 Symfony2 中组织它的更好方法。我正在使用自定义提供程序对 REST API 进行基于令牌的身份验证。但是你不需要在每个请求上手动检查它,symfony 会为你做这件事。您只需在 security.yml 中创建 ACL 或使用 FrameworkExtraBundle 中的 @Security 注释即可。

以上是关于在 Php/symfony 中检查用户身份验证的主要内容,如果未能解决你的问题,请参考以下文章

检查用户是不是在 Android 的 Firebase Google 身份验证中首次通过身份验证

Nativescript Vue + Firebase 身份验证:检查用户是不是在每个组件中进行身份验证的最佳方法?

检查身份验证状态并重定向用户

如何检查用户是不是在 Firebase 和 Express/Node.js 中经过身份验证?

在 Flutter 中使用 Firebase 身份验证检查用户是不是是新用户

检查用户是不是在 ASP.NET Core 中使用基于令牌的身份验证登录