3

私は、成長し続けるかなり大きなSpring MVCアプリに取り組んでいます。これは、ブラウザーに返される HTML をレンダリングする JSP であるビューを持つ従来の Spring MVC アプリです。このアプリは、多くの JavaScript および jQuery プラグインを使用しています。JavaScript はコード全体に散らばっており、保守が難しくなっています。これをクリーンアップして、単一ページのアプリケーションに移行したいと考えています。Backbone.js、特に Marionette を調査しました。いくつか質問があります:

  1. Spring Security はこれとどのように連携しますか? 私が理解しているように、サーバーから返される JSP と HTML の代わりに、RESTful API を介した JSON になります。ユーザーがユーザー名/パスワードを使用してログインするとき、API キーを生成し、認証の成功応答でそれを送信する必要がありますか? その時点から、すべての API 呼び出しは、各呼び出しを認証するためにその API キーの部分を持つことになりますか?

  2. JSP ビューを使用した従来の Spring MVC アプリを、RESTful API を使用した Javascript MVC ビュー アーキテクチャに移行することに成功した人はいますか? それは価値があり、何か提案はありますか?

4

1 に答える 1

3

私は同様のプロジェクトに取り組んだ経験があります。アプリで頻繁にメンテナンスを実行する必要がある場合、クライアント側のコードをクリーンアップするために投資した時間は報われるはずです。既存のサーバー側コードの一部を再利用すれば、思ったより簡単になる可能性があります。

既存の mvc ルートがドメインにうまく適合する可能性があります。まったく新しい API を実装しようとするのではなく、既存のスプリング コントローラーを適応させて json を返すことができます。Spring の既存の認証/セッション管理は、このアプローチに無料で付属しているため、時間と労力を節約できます。

注意すべきことが1つあります。バックボーンのフェッチ メソッドから返される 401 および 403 ステータス コードを処理する必要があります。アプリによっては、このためのグローバル ハンドラーをセットアップすると便利な場合があります。

401 /403 のグローバル リダイレクト

App.on("initialize:after", function() {
    $(document).ajaxError(function (event, xhr) {
        if(xhr.status === 401) {
            window.location.href('/#sign-in');
        }else if(xhr.status === 403) {
            window.location.href('/#restricted');
        }
    });

    Backbone.history.start();
});
于 2013-05-13T10:42:44.413 に答える