我正在开发一个需要身份验证的简单Web应用程序。我想要一些JSP页面,其中一些链接或功能对普通用户是隐藏的,对管理员用户是可见的。 我应该在JSP页面中放入很多if语句吗?或者我应该在JSP页面中放置一个执行此控件的bean吗?
我不喜欢这些解决方案,我希望你能再给我一个建议。 我正在使用Struts2,所以我更希望尊重MVC模式。
答案 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