Spring-Security可以控制Html + JQuery + Json + SpringRoo项目吗?

时间:2012-07-09 16:12:47

标签: spring-mvc spring-security spring-roo

我使用HTML + JQuery作为UI,Spring-Roo生成包含Json对象字符串转换的服务层。它对我们很有用,如下面的示例代码:

@RequestMapping(headers = "Accept=application/json")
@ResponseBody
public ResponseEntity<String> ArticleController.listJson() {
    HttpHeaders headers = new HttpHeaders();
    headers.add("Content-Type", "application/json; charset=utf-8");
    List<Article> result = Article.findAllArticles();
    return new ResponseEntity<String>(Article.toJsonArray(result), headers, HttpStatus.OK);
}

但在开发了几个示例页面之后,我有一些问题:

1)我们想使用Spring-Security作为访问控制模块,这个框架可以吗?服务器如何知道它是来自浏览器的相同会话请求?

2)纯HTML + JQuery真的没问题,而不是jsp服务器技术?因为我看到许多Ajax代码注入了html,其中很多都无法重用。我们知道服务器技术具有可以最大化代码重用的模板。我担心开发难度和维护工作。

PS: Why we decided using HTML+JQuery+Json is because we directly get HTML+CSS from Art designer, 
and we have plan to support different client besides browser, so Json might be a good choice.

感谢。

1 个答案:

答案 0 :(得分:2)

  

1)我们希望使用Spring-Security作为访问控制模块,[...]服务器如何知道它是来自浏览器的相同会话请求?

首先,必须以某种方式在服务器端建立会话。使用标准的Spring Security登录屏幕或使用致电spring_security_login。作为回报,服务器将发送带有JSESSIONID的cookie。此cookie随每个后续请求(包括AJAX请求)一起发送,因此服务器知道哪个用户调用REST方法。这是完全透明的。

当你退出时(通过调用j_spring_security_logout)会话以及cookie被销毁。

我们正在成功使用这种方法(更多的是,由于历史原因,我们从JavaScript调用了服务!)并且它的效果非常好。

  

2)[...]纯HTML + JQuery真的好吗?因为我看到许多Ajax代码注入了html,其中很多都无法重用。 [...]

关注的真正分离是国王。将JavaScript保存在一个位置(.js)文件中,将HTML保存在其他位置(.html)。他们永远不应该混在一起。同时保持JavaScript代码的分层,尽可能远离DOM操作(例如,使用客户端模板引擎)。

此外,没有什么能阻止您在构建期间生成HTML,因此每个页面都包含常见的HTML代码段(如页眉和页脚)。