如何根据用户角色有条件地显示JSP页面的元素

时间:2012-02-16 19:36:07

标签: jsp servlets authorization user-roles conditional-rendering

如何在网页上加载菜单取决于登录用户?我想制作一些网站,其中一些菜单将在登录前显示,登录后将显示更多菜单,如果管理员登录则取决于登录用户,如果普通用户登录则会出现一些管理菜单,然后会添加一些不同的菜单。我想使用JSP / Servlet构建这个项目。当用户点击任何菜单时,将不会重新加载总页面,只会更改某些部分,其中显示此菜单的详细说明。

2 个答案:

答案 0 :(得分:1)

您可以使用JSTL以编程方式控制JSP的HTML输出中的流。您可以通过HttpServletRequest#isUserInRole()检查当前登录用户的角色,该用户返回boolean

当您使用Servlet 3.0时,您还可以利用新的EL 2.2支持使用参数调用方法。所以,这应该做:

<c:if test="${pageContext.request.isUserInRole('admin')}">
    <p>This will be displayed only if the user has the role "admin".</p>
</c:if>
<c:if test="${pageContext.request.isUserInRole('guest')}">
    <p>This will be displayed only if the user has the role "guest".</p>
</c:if>

另见:

答案 1 :(得分:0)

您可以在不同的jsps中使用不同的菜单,然后根据登录的用户包含这些jsps。

例如......

<%if(userRole.equals("admin")){%>
   <jsp:include page="../menu/admin_menu.jsp" />
<%}%>
<%if(userRole.equals("user")){%>
   <jsp:include page="../menu/user_menu.jsp" />
<%}%>