Struts2:拦截器可以处理未经授权的访问吗?

Struts2:拦截器可以处理未经授权的访问吗?,struts2,Struts2,我试图理解Struts2拦截器。所以,如果我的问题是愚蠢的,请原谅 我猜拦截器是特定于某个action类的(这意味着在调用特定action类之前,它们会被调用) 例如: 拦截器不一定特定于某个操作——事实上,在大多数情况下,它们应用于许多操作或全局应用于所有操作(非常类似于servlet过滤器) 本文讨论了如何在Struts2应用程序中使用拦截器进行身份验证。正如Steven所说,拦截器并不特定于任何操作,它们实际上是Struts2框架的核心 拦截器是一组可重用组件。在所有情况下,它们都应用于

我试图理解Struts2拦截器。所以,如果我的问题是愚蠢的,请原谅

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

例如:



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


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

正如Steven所说,拦截器并不特定于任何操作,它们实际上是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
    }
}
publicstringintercept(ActionInvocation调用)引发异常{
final-ActionContext=invocation.getInvocationContext();
映射会话=ActionContext.getContext().getSession();
Object user=session.getAttribute(用户\句柄);
if(user==null){
//任何处理
返回“login”;//用户未登录,请他/她登录
}否则{
return invocation.invoke();//用户是受信任的用户让她继续
}
}

谢谢Steven Benitez,但这个链接帮了我的忙,它是一个登录拦截器,是专门为一个类编写的,我的问题是,如果Loggedout用户直接输入http:myserver/Testing/Img2.jpg,我该如何重定向他。如果是这个问题,你不必把“我的问题是”之后的所有内容都记在问题中。是的,请非常清楚地解释您在原始问题中提出的问题。这个问题中的拦截器显示了如何将未登录的用户重定向到登录页面,而不是向他们显示请求的内容。操作属于一个包,通常拦截器被分组到一堆拦截器中,然后应用到一个包中。您可以将拦截器应用于特定的操作,如您所示。《struts2在行动中》一书展示了如何实现您所要求的基本安全性,并解释了您需要了解的内容(解决方案与umesh提供的非常接近)。因为我提到过一本书,所以如果您需要快速了解最新情况,最好同时订购这两本书。