Java 如何防止通过url直接访问jsp?

Java 如何防止通过url直接访问jsp?,java,Java,我正在用java开发一个web应用程序。为了防止直接访问url,我使用了检查会话验证的代码。这是一个客户员工应用程序 在除登录页面之外的每个页面中,我都有相同的标题,其中菜单项是使用会话动态生成的,具体取决于角色。但是,当员工直接访问url时,它应该只能由客户访问,url仍然可以访问。不应该是这样 如何防止员工使用仅对客户有效的url直接访问jsp?使用筛选器仅允许经过身份验证的请求访问资源您仅在检查会话是否有效。 您需要检查其中一个会话参数,例如用户名或客户ID。应用筛选器 public cl

我正在用java开发一个web应用程序。为了防止直接访问url,我使用了检查会话验证的代码。这是一个客户员工应用程序

在除登录页面之外的每个页面中,我都有相同的标题,其中菜单项是使用会话动态生成的,具体取决于角色。但是,当员工直接访问url时,它应该只能由客户访问,url仍然可以访问。不应该是这样


如何防止员工使用仅对客户有效的url直接访问jsp?

使用筛选器仅允许经过身份验证的请求访问资源

您仅在检查会话是否有效。 您需要检查其中一个会话参数,例如用户名或客户ID。

应用筛选器

public class SessionCheck implements Filter

{
public void doFilter(ServletRequest arg0, ServletResponse arg1, FilterChain arg2) throws IOException, ServletException
    {
        HttpServletRequest request = (HttpServletRequest) arg0;
        HttpServletResponse response = (HttpServletResponse) arg1;
        if(null==((String) request.getSession().getAttribute("SESSION_PARAM_CUSTOMERID")) || ((String) request.getSession().getAttribute("SESSION_PARAM_CUSTOMERID")).equals(""))
        {
            response.sendRedirect(PAGE_SIGN_IN);
            return;
        }
        arg2.doFilter(request, response);
    }

}
web.xml

<filter>
  <filter-name>SessionCheckFilter</filter-name>
  <filter-class>
    com.mycomp.filter.SessionCheck
  </filter-class>
</filter>

会话检查过滤器
com.mycop.filter.SessionCheck
使用过滤器映射标记映射每个安全请求url,如下所示

 <filter-mapping>
      <filter-name>SessionCheckFilter</filter-name>
      <url-pattern>/personal-info</url-pattern>
    </filter-mapping>

会话检查过滤器
/个人信息

据我所知,您需要的是

  • 任何未经认证的用户都会出现------显示------->登录页面
  • 角色为Customer的身份验证用户------显示------->与Customer相关的菜单项
  • 角色为Employee的已验证用户------显示------->与Employee相关的菜单项
  • 在这种情况下,我认为你应该做的是

    当person在该点输入URL时,检查会话是否为true/set。 为此,您可以将任何变量(如userName)设置为键

    若未设置会话,则显示公共登录页面,并在验证后将用户名密钥设置到会话中,否则不设置

    如果设置了会话(您可以再次检查用户名密钥以验证会话是否存在),然后检查用户的角色

    如果用户属于角色CUSTOMER------->则相应地工作。
    如果用户属于角色EMPLOYEE------->相应地工作。

    问题是什么?你能分享你目前的工作吗?