2012-07-09 32 views
1

我使用HTML + JQuery作爲UI,Spring-Roo生成包含Json對象字符串轉換的服務層。它非常適合我們,像下面的示例代碼:Spring-Security可以控制Html + JQuery + Json + SpringRoo項目嗎?

@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的安全訪問控制模塊,是確定這個框架?服務器如何知道它是來自瀏覽器的同一個會話請求?

2)純粹的HTML + JQuery真的沒問題,而不是jsp服務器技術?因爲我在html中注入了許多Ajax代碼,並且其中很多都不能被重用。正如我們所知,服務器技術具有可以最大化代碼重用的模板。我擔心發展困難和維護工作。

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. 

謝謝。

回答

2

1)我們想使用Spring-Security作爲訪問控制模塊,[...]服務器如何知道它是來自瀏覽器的同一個會話請求?

首先會話必須以某種方式在服務器端建立。使用標準的Spring Security登錄屏幕或使用致電spring_security_login。作爲回報,服務器將發送一個包含JSESSIONID的cookie。隨每個後續請求(包括AJAX請求)發送此cookie,以便服務器知道哪個用戶調用REST方法。這是完全透明的。

此外,當您註銷時(通過呼叫j_spring_security_logout)會話以及Cookie被銷燬。

我們正在成功使用這種方法(由於歷史原因,我們正在調用來自JavaScript的服務!),它的工作非常好。

2)純HTML + JQuery確實可以嗎?因爲我在html中注入了許多Ajax代碼,並且其中很多都不能被重用。 [...]

真正分離的擔憂是國王。將JavaScript保存在一個地方(.js)文件和HTML在其他地方(.html)。他們不應該混合。同時保持JavaScript代碼分層,並儘可能遠離DOM操作(例如,使用客戶端模板引擎)。

此外,沒有什麼能夠阻止您在構建過程中生成HTML,因此每個頁面都包含常見的HTML片段,如頁眉和頁腳。

+0

謝謝,對於第一個答案,你的意思是「JSESSIONID」是「透明的」,這是否意味着我們不需要處理這個「JSESSIONID」,它會自動在服務器和客戶端之間傳遞?對於No.2的答案,'生成過程中生成HTML'是否意味着它不同於jsp和asp技術,在構建階段生成的html?你能告訴我框​​架的名字嗎? – JerryCai 2012-07-10 01:19:50

+0

@JerryCai:更好的是,好的servlet容器會將'HttpOnly'標誌添加到JSESSIONID cookie中,所以你甚至不會在客戶端訪問它。但是一旦創建了cookie,它將通過**發送給服務器的每個**請求來傳遞:包括圖像,HTML和AJAX調用。廣告。 2:您可以編寫[tag:ant] target或[tag:maven]插件來預處理您的HTML模板,例如添加常見標題。 – 2012-07-10 06:31:09

+0

謝謝。這個消息很好。 – JerryCai 2012-07-10 09:42:47

相關問題