0

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

    api:
        pattern: ^/api
        security: false

RequestListener通过检查用户是否提供 Auth 令牌或使用 Basic Auth 来“保护”他们。正确登录后,我们使用用户填充安全上下文。(也许我们甚至可以使用工厂制作防火墙?)

这非常适合想要在他们的应用程序中使用我们的 API 的外部开发人员/组织。

现在,我希望我们在项目中依赖这些相同的 API(控制器、ajax 调用..),我现在想知道我们是否必须自己实现 API get-token 或 Basic Auth 流程来填充安全上下文API,或者他们是否可以以某种方式神奇地检索主防火墙的当前安全上下文。(它可以让我免于获取令牌、将其保存在某处并在我的视图中一直通过我的 Backbonejs ajax 调用传递它的尴尬)。

感谢您对此的想法!:)

4

1 回答 1

1

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

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

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

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

然后,只需在您的 JavaScript 应用程序中使用它:

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

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

于 2012-08-15T17:30:53.040 回答