将 Backbone.js 添加到现有的 Spring MVC 应用程序中。

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. 其他人是否成功地将传统的Spring MVC应用程序与JSP视图转移到JavaScript MVC视图架构中,并使用RESTful API?这样做是否值得,并有什么建议?

1个回答

3

我有一些类似项目的工作经验。如果您需要经常维护应用程序,则投入清理客户端代码的时间会得到回报。只要重复使用现有的服务器端代码,这可能比您想象的更容易。

很可能您现有的MVC路由非常适合您的业务领域。您可以将现有的Spring控制器调整为返回JSON,而不是试图实现全新的API。采用这种方法,Spring现有的身份验证/会话管理将免费提供,节省您的时间和精力。

需要注意的一点是,您需要处理Backbone获取方法返回的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();
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接