2013-04-24 25 views
2

我可以使用Spring-MVC登錄。 現在我想根據登錄的用戶更改菜單。 如何使用spring MVC Controller將登錄用戶名傳遞到我的主頁? 這樣我可以使用該用戶名並根據登錄名更改菜單? 有沒有可用的框架? 如果我想在成功登錄後將對象集合(其中包含分配給登錄用戶的操作)發送到我的主頁,該怎麼辦?我想根據登錄用戶更改主頁菜單。我如何在Spring MVC中做到這一點?

有沒有更好的方法來做到這一點?

任何建議,將不勝感激。需要幫助。

回答

0

如果你想基於角色處理這個問題,那麼spring security會提供jsp taglib來處理這個問題。

http://static.springsource.org/spring-security/site/docs/3.0.x/reference/taglibs.html

<sec:authorize access="hasRole('supervisor')"> 

This content will only be visible to users who have 
the "supervisor" authority in their list of <tt>GrantedAuthority</tt>s. 

</sec:authorize> 
+0

這將是一些解脫。肯定會搜索它,並回來一些問題。 – 2013-04-24 11:17:21

+0

如果我想授予某些頁面的授權,上述方法會很好。如何授權像100 jsps?不能讓我從一些應用程序上下文文件或屬性文件? – 2013-04-24 17:44:49

+0

我不知道它那麼巨大。您肯定可以在角色映射到屬性文件,xml文件甚至數據庫的菜單中進行配置。基於此配置,您可以知道角色可以顯示哪些菜單。 – 2013-04-25 03:36:27

0

除了普山的回答,您還可以使用自定義的UserDetails類存儲關於驗證的用戶信息,並從您的控制器類值傳遞給模型與model.put("myParamName", myParam);

然後,在JSP中,有或沒有authorize標記,您可以參考${myParam}的模型屬性。請注意,這不僅限於純HTML內容;你也可以通過這種方式傳遞Javascript--只是要小心這樣一個事實:雖然傳遞的內容可能是你喜歡的任何數據類型(無論如何JSP都可以處理),但最終呈現時它將被視爲字符串,所以您必須轉義字符幷包含換行符和/或製表符以獲取冗長的內容和適當的格式。例如:

MyController.java

. . . 

String myJavascript = "<script>\n\tvar myVar = \"Hello Dheeraj!\";\n\talert(myVar);\n</script"; 
model.put("someJavascript", myJavascript); 

. . . 

myPage.jsp

${someJavascript} 

現在,當該頁面被調用時,客戶端將看到以下內容:

. . . 

<script> 
    var myVar = "Hello Dheeraj!"; 
    alert(myVar); 
</script> 

您當然也可以傳遞數組等等,並循環遍歷項目以構建<select>元素等。特定於用戶的邏輯可能駐留在(或從您的控制器類中調用)。

+0

你可以分享一些鏈接,我可以找到我如何發送Java腳本從我的jsp從控制器?我可以將包含在我的java腳本中的JSON集合與ajax一起發送到控制器,就像您在示例中顯示的那樣?所以我可以從我從控制器發送的json集合中的jsp頁面中顯示一些數據? – 2013-04-24 17:42:32

+0

[這裏](http://www.mkyong。com/spring-mvc/spring-mvc-hello-world-example /)是將信息放入模型並檢索它的一個非常基本的示例。我使用'model.put(「keyName」,object),而這個例子使用'model.addObject(「keyName」,object)',並且還有'model.addAttribute(「keyName」,object)';我不知道這些都是如何不同(我期望'addAttribute'是基於'@ModelAttribute'註釋,但我不確定)。 您可以像使用字符串一樣傳遞Javascript(如我的示例中所示)。 – cabbagery 2013-04-24 18:22:34

+0

肯定會試試,並回來一些問題。 – 2013-04-25 04:11:12

相關問題