我正在使用 jstl 代码来隐藏必须是唯一管理员用户才能访问的按钮……例如,现在我将按钮隐藏给重定向到 deletepage.jsp 的普通用户。我使用 c:if jstl 标签正确地制作了它......但是如果他们知道链接,普通用户仍然可以访问它......如何防止这种情况?
问问题
763 次
3 回答
0
执行此操作的 3 种方法:
1-对每个处理有此问题的调用的 servlet 进行验证。2-通过过滤器来做。3-使用任何框架,如struts。
框架将导致更少的代码以适当的方式编写。如果您不想要首选的框架,则应使用过滤器
于 2013-01-28T14:34:31.273 回答
0
您可以在 web.xml 文件中设置过滤器,然后实现 SecurityFilter 类。在这个类中,你需要实现函数
public void doFilter(ServletRequest req, ServletResponse res,FilterChain next) throws IOException, ServletException {
}
然后,您可以检查请求的 url 是否存在当前用户的会话。如果是,那么您可以将他导航到该页面;否则,只需拒绝并重定向到错误页面
if ("/admin.jsp".equals(httpReq.getServletPath())) {
if(httpReq.getSession().getAttribute("CurrentUser")!=null) {
// go to the requested url
}
else {
httpReq.getRequestDispatcher("/no_access.jsp").forward(httpReq, httpRes);
return;
}
}
于 2013-01-27T18:00:31.967 回答
0
使用 MVC,您可以让控制器根据访问控制列表 (ACL) 检查用户的身份,以防止访问受限页面。此外,为了进一步密封这一点,您可以对直接访问这些受限页面进行额外检查,以便用户无法直接请求它们。此建议解决方案的实施细节由您根据您的设计来决定。
于 2013-01-27T15:44:08.753 回答