3

我正在开发一个相当大的 Spring MVC 应用程序,该应用程序还在继续增长。这是一个传统的 Spring MVC 应用程序,其视图是 JSP,它呈现返回给浏览器的 HTML。该应用程序使用了大量的 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 路由很可能非常适合您的域。您可以调整现有的 spring 控制器以返回 json,而不是尝试实现全新的 api。Springs 现有的身份验证/会话管理将通过这种方法免费提供,从而节省您的时间和精力。

需要注意的一件事。您将需要处理从主干获取方法返回的 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 回答