如何防止对行动类的直接URL访问

时间:2013-12-16 15:03:09

标签: java jsp struts2

我正在开发一个购物网站应用程序。在我的应用程序中,我需要阻止对我的操作类的直接URL访问。举个例子,我有一个名为OrderAdd的动作。在这个动作类中,我从请求范围中获取了一些数据。如果有人直接访问此操作类,则会显示Nullpointer异常。如何在我的应用程序中阻止这种情况。它有什么可能的方法吗?我正在使用jsp来查看我的观点。我的框架是struts2。动作是java。

提前致谢!

2 个答案:

答案 0 :(得分:0)

j2ee内置了安全约束。您可以在web.xml中配置您不希望直接访问的URL模式..

请阅读此处 http://java.dzone.com/articles/understanding-web-security

Source :

使用案例:我们希望从任何访问中排除一组Web资源。当Web应用程序的某个部分需要经历某种形式的维护或者不适用于通用Web应用程序的特定物理部署时,可能会出现这种情况。我们将使用不指定角色的授权约束来实现此目的。

<security-constraint>
   <display-name>excluded</display-name>
   <web-resource-collection>
      <web-resource-name>No Access</web-resource-name>
      <url-pattern>/excluded/*</url-pattern>
      <url-pattern>/restricted/employee/excluded/*</url-pattern>
      <url-pattern>/restricted/partners/excluded/*</url-pattern>
   </web-resource-collection>
   <web-resource-collection>
      <web-resource-name>No Access</web-resource-name>
      <url-pattern>/restricted/*</url-pattern>
      <http-method>DELETE</http-method>
      <http-method>PUT</http-method>
      <http-method>HEAD</http-method>
      <http-method>OPTIONS</http-method>
      <http-method>TRACE</http-method>
      <http-method>GET</http-method>
      <http-method>POST</http-method>
   </web-resource-collection>
   <auth-constraint />
   <user-data-constraint>
      <transport-guarantee>NONE</transport-guarantee>
   </user-data-constraint>
</security-constraint>

答案 1 :(得分:0)

我认为这个问题是基于一种误解。 Web应用程序的本质是用户可以使用任何请求方法访问任何URL。您需要允许用户对有效URL发出有效请求,因为在应用程序的正常,正确的工作流程中需要这样做。如果您不希望用户在未提供所需参数的情况下尝试访问网址时看到您的NullPointerException,则应使用try..catch来抓住他们 - 或者更好的是,避免通过使用NullPointerException或其他内容测试缺少的参数,首先导致 if