用户通过Symfony2中的Api登录

用户通过Symfony2中的Api登录,symfony,Symfony,我正在symfony中开发一个API,其中用户使用jsonweb令牌进行身份验证。此处提供了一个捆绑包: 项目页面上有关于如何设置一切的文档。此捆绑包依赖于标准的“form_login”配置,该配置由vendor/symfony/symfony/src/symfony/bundle/SecurityBundle/DependencyInjection/Security/Factory/FormLoginFactory.php中定义的类支持 该捆绑包为认证提供成功和失败侦听器,该侦听器会短路请求并

我正在symfony中开发一个API,其中用户使用jsonweb令牌进行身份验证。此处提供了一个捆绑包:

项目页面上有关于如何设置一切的文档。此捆绑包依赖于标准的“form_login”配置,该配置由vendor/symfony/symfony/src/symfony/bundle/SecurityBundle/DependencyInjection/Security/Factory/FormLoginFactory.php中定义的类支持

该捆绑包为认证提供成功和失败侦听器,该侦听器会短路请求并返回带有令牌的JsonResponse或带有相应响应代码的错误

使用项目页面上的示例配置,一切都按所述进行。问题在于,这些预定义的配置工厂(如“form_login”)设置了cookie和无状态api中不需要的许多其他行为

安全组件定义了一个配置选项“无状态”,该选项在symfony安全手册中定义

然而,上面的文档清楚地指出,“如果使用表单登录,即使将无状态设置为true,Symfony2也会创建cookie。”

如果用户未经api要求的身份验证,则“form_login”有许多重定向或转发到登录页面的选项

此外,您可能还需要使用许多其他功能,例如SwitchUserListener,这些功能在传统的开发模型中根深蒂固,服务器只返回html

我希望创建一种轻量级方法,使用此捆绑包插入symfony安全性并禁用其他不必要的检查

使用JWT,实际上不需要登录,我们需要一个未经验证的路由,使用返回令牌的授权头将用户名和密码发送到(通过SSL)。对于其他受保护的路由,我们只提供此令牌。这部分已经由bundle提供,我只需要一种简化的方法来获取初始令牌,而不需要调用不必要的symfony代码

我发现了这个示例,它实现了绕过防火墙在一个简单控制器中获取令牌的代码

我正在寻找一种更好的方法来实现这一点,使用防火墙。我怀疑我将不得不创建自己的安全工厂,如“form_login”

我可以使用http基本身份验证方法来获取令牌,但我不希望symfony显示用户名/密码窗口。我希望验证器检查授权头,并简单地返回消息和响应代码,无论它是否成功


感谢您的建议。

我创建了自己的捆绑包来处理此问题: