【问题标题】:How to prevent others accessing links restricted for admin users only如何防止其他人访问仅限管理员用户使用的链接
【发布时间】:2013-01-11 00:21:15
【问题描述】:

我正在使用 jstl 代码来隐藏必须是唯一管理员用户才能访问的按钮...现在,例如,我将按钮隐藏给重定向到 deletepage.jsp 的普通用户。我使用 c:if jstl 标签正确地制作了它......但是如果他们知道链接,普通用户仍然可以访问它......如何防止这种情况?

【问题讨论】:

  • 您需要JAAS。点击以上链接了解更多信息
  • 您可能想要配置网络安全,“URL 模式”可能会提供您正在寻找的内容。有关网络安全的详细教程,请参阅此处。java.dzone.com/articles/understanding-web-security
  • 答案取决于您如何管理登录用户及其角色。你是在使用容器管理的身份验证还是自制的东西?
  • 同意@BalusC 先生。
  • 自制软件是什么意思?我为每个用户分配一个角色,然后为非管理员用户隐藏特定控件

标签: java jsp jakarta-ee servlets


【解决方案1】:

使用 MVC,您可以让控制器根据访问控制列表 (ACL) 检查用户的身份,以防止访问受限页面。此外,为了进一步密封这一点,您可以对直接访问这些受限页面进行额外检查,以便用户无法直接请求它们。此建议解决方案的实施细节由您根据您的设计来决定。

【讨论】:

  • 基于 URL 的访问限制不是 MVC 框架的责任。
【解决方案2】:

您可以在web.xml 文件中设置filter,然后实现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;
    }
}

【讨论】:

    【解决方案3】:

    三种方法:

    1-对每个处理有此问题的调用的 servlet 进行验证。 2-通过过滤器来做。 3- 使用任何框架,如 struts。

    Framework 将减少以适当方式编写的代码。如果您不想要首选的框架,则应使用过滤器

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 2022-11-05
      • 2018-11-06
      • 2020-09-02
      • 2013-12-04
      • 2021-12-13
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多