0

私は現在、Symfony2.1でRestfull APIの新しいセットを開発していますが、それらは今のところ私のsecurity.ymlにファイアウォールがありません。

    api:
        pattern: ^/api
        security: false

ユーザーが認証トークンを提供するか、基本認証を使用するかを確認するRequestListenerことで、それらを「保護」します。正しくログインした後、セキュリティコンテキストにユーザーを入力します。(たぶん、ファクトリーを使用してそのファイアウォールを作成することもできますか?)

これは、アプリでAPIを使用したい外部の開発者/組織に最適です。

さて、プロジェクト内でこれらの同じAPI(コントローラー、ajax呼び出しなど)に依存したいと思います。APIget-tokenまたはBasic Authプロセスを実装して、のセキュリティコンテキストを設定する必要があるかどうか疑問に思いました。 API、または何らかの方法で、メインファイアウォールの現在のセキュリティコンテキストを魔法のように取得できる場合。(トークンを取得してどこかに保存し、Backbonejs ajax呼び出しを介してトークンを渡すという恥ずかしさを軽減できます)。

それについて考えてくれてありがとう!:)

4

1 に答える 1

1

まず第一に、基本認証の場合、Symfony2 が提供するhttp_basic認証プロバイダーを利用できます。リクエスト リスナーを使用する必要はありません。トークンベースの認証を使用する場合は、トークン認証プロバイダーを記述します。

セキュリティ コンテキストは分離されており、別のコンテキストと対話することはできません。それらは完全に分割されています。ただし、必要な数の認証プロバイダーを追加できます。

Backbone.js を使用すると、トークン ベースの戦略を維持できます。たとえば、HTML 属性を使用してトークンを Backbone に渡します。

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

次に、JavaScript アプリで使用します。

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

詳細については、$.ajaxSetup のドキュメントを参照してください。

于 2012-08-15T17:30:53.040 に答える