【问题标题】:Struts2 :Can Interceptors can handle Unauthorized Access?Struts2:拦截器可以处理未经授权的访问吗?
【发布时间】:2011-11-18 02:05:54
【问题描述】:

我正在尝试了解 Struts2 拦截器。如果我的问题很愚蠢,请原谅。

我猜拦截器是特定于动作类的(这意味着在调用特定动作类之前,它们会被调用)。

例如:

<action name="test" class="com.jranch.Test">
    <interceptor-ref name="GuiStack”/>
    <result name="success">/secure.jsp</result>
</action>

我的问题是:假设必须保护网站中的图片免受未经授权的访问(意味着如果用户直接在浏览器中输入 URL,则在登录之前不应允许他们查看图片)。

我的观点是,如果它与 Servlet 过滤器有关,我可以通过将 url-pattern 标签放入 /* 来编写一个简单的过滤器来检查所有请求。 Struts2 拦截器能否处理这个问题,因为我猜它们是特定于动作类的?

如果我错了,请纠正我。

【问题讨论】:

  • 动作属于一个包,大多数情况下拦截器被分组到一个拦截器堆栈中,然后应用于一个包。正如您所展示的,您都可以将拦截器应用于特定操作。 “struts2 in action”一书展示了如何实现您所要求的基本安全性,并解释了您需要了解它的内容(解决方案几乎就是 umesh 提供的)。由于我提到了一本书,所以如果您需要快速上手,只提“Apache Struts 2 Web 应用程序开发”是公平的,不妨同时订购。

标签: struts2


【解决方案1】:

正如 Steven 所说,Interceptors 并不特定于任何 Action,它们实际上是 Struts2 框架的核心 拦截器是一组可重用的组件。在所有情况下,它们都应用于请求处理周期,包括从异常处理到角色处理。 当一个人为一个特定的动作编写一个拦截器时,它是非常微不足道的用例。

您正在谈论的用例可以由拦截器处理,其中对于特定资源的每个请求都可以首先由拦截器拦截,并且根据允许访问的自定义标准,我们可以将请求转发到调用堆栈或可以拒绝请求。

public String intercept (ActionInvocation invocation) throws Exception {
    final ActionContext context = invocation.getInvocationContext ();
    Map<String, Object> session = ActionContext.getContext().getSession();
     Object user = session.getAttribute (USER_HANDLE);
    if (user == null) {

                //Any processing
               return "login";   //User is not logged in so ask him/her to login
    } else {
        return invocation.invoke ();  //user is trusted one let her go ahead
    }
}

【讨论】:

    【解决方案2】:

    拦截器不一定特定于某个操作 - 事实上,在大多数情况下,它们会应用于许多操作或全局应用于所有操作(非常类似于 servlet 过滤器)。

    answer 讨论了如何在 Struts2 应用程序中使用拦截器进行身份验证。

    【讨论】:

    • 感谢 Steven Benitez,但该链接对我有帮助,它是一个特定于类的登录拦截器,我的问题是,如果他直接进入 http:myserver,我如何重定向 Loggedout 用户/Testing/Img2.jpg .
    • 如果这就是问题所在,你应该把“我的问题是”之后的所有内容都放在问题中。
    • 是的,请非常清楚地解释您在原始问题中提出的问题。该问题中的拦截器确实显示了如何将未登录的用户重定向到登录页面,而不是向他们显示请求的内容。
    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2015-03-05
    相关资源
    最近更新 更多