繁体   English   中英

如何在Symfony2的两个不同防火墙下保护API

[英]How to protect APIs under two different firewalls on Symfony2

我目前正在Symfony2.1上开发一套新的Restfull API,目前它们在我的security.yml中没有防火墙。

    api:
        pattern: ^/api
        security: false

我有一个RequestListener ,通过检查用户是否提供Auth令牌或使用基本Auth来“保护”它们。 正确登录后,我们用用户填充安全上下文。 (也许我们甚至可以使用Factory对其进行防火墙?)

这对于希望在其应用程序中使用我们的API的外部开发人员/组织来说非常理想。

现在,我希望我们在项目中依赖这些相同的API(控制器,ajax调用..),我想知道现在是否必须自己实现API令牌或基本身份验证流程来填充安全性上下文。 API,或者是否可以以某种方式神奇地检索主防火墙的当前安全上下文。 (这将使我免于获得令牌,将其保存在某个地方并通过我的Backbonejs ajax调用它的尴尬)。

感谢您对此的想法! :)

首先,对于基本身份验证,您可以依靠Symfony2提供的http_basic身份验证提供程序 无需使用请求侦听器。 如果要使用基于令牌的身份验证,请编写令牌身份验证提供程序

安全上下文是分开的,您不能与其他上下文进行交互。 它们是完全分区的。 但是,您可以根据需要添加任意数量的身份验证提供程序。

使用Backbone.js,您可以保留基于令牌的策略。 例如,使用HTML属性将令牌传递给Backbone:

<body data-token="xxxx">
    ...
</body>

然后,只需在您的JavaScript应用中使用它即可:

$.ajaxSetup({
    headers: {
        'token': $('body').data('token')
    }
});

有关更多信息,请参见$ .ajaxSetup文档

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM