我可以使用 Spring-MVC 登录。现在我想根据登录的用户更改菜单。如何使用 spring MVC 控制器将登录用户名传递到我的主页?这样我就可以使用该用户名并根据登录名更改菜单?是否有任何可用的框架?如果我想在成功登录后将一组对象(其中将包含分配给登录用户的操作)发送到我的主页怎么办?
有没有更好的方法呢?
任何建议将不胜感激。需要帮助。
我可以使用 Spring-MVC 登录。现在我想根据登录的用户更改菜单。如何使用 spring MVC 控制器将登录用户名传递到我的主页?这样我就可以使用该用户名并根据登录名更改菜单?是否有任何可用的框架?如果我想在成功登录后将一组对象(其中将包含分配给登录用户的操作)发送到我的主页怎么办?
有没有更好的方法呢?
任何建议将不胜感激。需要帮助。
除了 Bhushan 的回答之外,您还可以使用自定义 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);
. . .
我的页面.jsp
${someJavascript}
现在,当调用该页面时,客户端将看到以下内容:
. . .
<script>
var myVar = "Hello Dheeraj!";
alert(myVar);
</script>
当然,您也可以传递数组等,并循环遍历项目以构建<select>
元素等。用户特定的逻辑可能驻留在您的控制器类上(或从中调用)。
如果你想基于角色来处理这个问题,那么 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>