仅为管理员角色启用链接和其他功能

时间:2011-11-18 09:10:28

标签: jsp security admin

我正在开发一个需要身份验证的简单Web应用程序。我想要一些JSP页面,其中一些链接或功能对普通用户是隐藏的,对管理员用户是可见的。 我应该在JSP页面中放入很多if语句吗?或者我应该在JSP页面中放置一个执行此控件的bean吗?

我不喜欢这些解决方案,我希望你能再给我一个建议。 我正在使用Struts2,所以我更希望尊重MVC模式。

2 个答案:

答案 0 :(得分:3)

这需要在视图方面进行控制。您不需要通过 scriptlet 放置if语句。只需使用taglibs来控制流量。例如,JSTL:

<c:if test="${user.admin}">
    <input type="submit" name="delete" value="Delete" />
</c:if>

这里,${user}应该只指向一个代表登录用户的bean,在上面的例子中有一个public boolean isAdmin() getter方法。如果它返回true,则会显示上例中的删除按钮。我不使用Struts2,但就我在其文档中看到的而言,有一个<s:if>标签实际上也是如此。

答案 1 :(得分:2)

你可以选择很多选项。其中一个是@Balus C在帖子中提到的。

此外,您可以为用户和管理员显示完全不同的jsp,这将阻止很多if else语句 您可以在struts.xml文件中配置

<action name="abcc" class="abc">
    <result name="admin_page">/templates/admin.jsp</result>
    <result name="user_page">/templates/user.jsp</result>
  </action>

您始终可以根据您的逻辑来显示动作类中的结果名称。 如果您正在认真实施基于角色的访问,我必须建议您使用这样的框架,其中一个是Spring security