我想根据登录用户更改主页菜单。我如何在Spring MVC中做到这一点?

时间:2013-04-24 09:28:05

标签: spring jsp spring-mvc spring-security spring-webflow

我可以使用Spring-MVC登录。 现在我想根据登录用户更改菜单。 如何使用spring MVC Controller将login-username传递给我的主页? 这样我就可以使用UserName并根据Login-name更改菜单? 有没有可用的框架? 如果我想在成功登录后将一组对象(包含分配给登录用户的操作)发送到我的主页,该怎么办?

有没有更好的方法呢?

任何建议都会受到更多赞赏。需要帮助。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

除了Bhushan的答案,您还可以使用自定义UserDetails类来存储与经过身份验证的用户相关的信息,并使用model.put("myParamName", myParam);

从控制器类将值传递给模型

然后,在JSP中,无论有没有authorize标记,您都可以使用${myParam}引用模型属性。请注意,这不仅限于纯HTML内容;您也可以以这种方式传递Javascript - 只是要警惕这样一个事实:虽然传递的内容可能是您喜欢的任何数据类型(无论如何都可以处理JSP),但最终呈现时它将被视为String,因此你必须转义字符并包含换行符和/或标签,以获取冗长的内容和正确的格式。例如:

<强> 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>元素等。特定于用户的逻辑可能位于您的控制器类中(或从中调用)。