我正在开发一个持续增长的相当大的 Spring MVC 应用程序。这是一个传统的 Spring MVC 应用程序,其 View 是 JSP,它呈现返回给浏览器的 HTML。该应用程序使用了大量的 javascript 和 jQuery 插件。 javascript 散布在整个代码中,并且越来越难以维护。我们想清理它并转移到单页应用程序。我们研究了 Backbone.js,特别是 Marionette。我们有几个问题:
Spring Security 如何处理它?据我了解,从服务器返回的不是 JSP 和 HTML,而是通过 RESTful API 返回的 JSON。因此,当用户使用用户名/密码登录时,我是否需要生成 API key 并将其发送到成功的身份验证响应中?然后从那时起,每个 API 调用都会有 API key 部分来验证每个调用?
其他人是否成功地将带有 JSP View 的传统 Spring MVC 应用程序迁移到带有 RESTful API 的 Javascript MVC View 架构?值得吗?有什么建议吗?
最佳答案
我有一些从事类似项目的经验。如果您需要对应用程序执行频繁维护,那么您花在清理客户端代码上的时间应该会有返回。如果您重用一些现有的服务器端代码,它可能比您想象的要容易。
很可能您现有的 mvc 路由很适合您的领域。与其尝试实现全新的 api,不如调整现有的 spring Controller 返回 json。 Springs 现有的身份验证/ session 管理将通过这种方法免费提供,从而节省您的时间和精力。
有一点需要注意。您将需要处理从主干获取方法返回的 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();
});
关于javascript - 将 Backbone.js 添加到现有的 Spring MVC 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16501244/