我正在使用symfony中的API,用户使用json web令牌进行身份验证.这里提供了一个捆绑包:https://github.com/lexik/LexikJWTAuthenticationBundle.
项目页面上有关于如何设置所有内容的文档.此捆绑包依赖于标准的"form_login"配置,该配置由vendor/symfony/symfony/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/FormLoginFactory.php中定义的类支持.
该bundle提供成功和失败监听器,用于验证短路请求并返回带有令牌的JsonResponse或带有相应响应代码的错误.
使用项目页面上的示例配置,一切都按照描述进行.问题是这些预定义的配置工厂(如"form_login")设置了cookie以及无状态api中不需要的许多其他行为.
安全组件定义了一个配置选项"无状态",该选项在symfony上的安全性书中定义.
但是,上面的文档明确指出"如果你使用表单登录,即使你将无状态设置为true,Symfony2也会创建一个cookie."
如果用户未经身份验证且api不需要,则"form_login"有许多选项可用于重定向或转发到登录页面.
您可能还想使用许多其他功能,例如SwitchUserListener在传统开发模型中根深蒂固,其中服务器只返回html.
我正在寻找创建一种轻量级方法来使用此捆绑包插入symfony安全性并禁用其他不需要的检查.
使用JWT,实际上不需要登录,我们需要一个未经身份验证的路由,我们使用返回令牌的授权头向(通过SSL)发送用户名和密码.对于其他受保护的路由,我们只提供此令牌.这个部分已经由bundle提供了,我只需要一个简单的方法来获取初始令牌而不需要调用不需要的symfony代码.
我找到了这个示例http://miguel.ibero.me/en/post/2012-04-04/symfony-rest-api.html,它实现了在简单控制器中绕过防火墙获取令牌的代码.
我正在寻找一种更好的方法来使用防火墙实现这一点.我怀疑我必须创建自己的安全工厂,例如"form_login".
我可以使用http basic auth方法来获取令牌,但我不希望symfony显示用户名/密码窗口.我希望验证器检查授权标头,只需返回消息和响应代码,无论它是否成功.
任何建议赞赏.
symfony ×1