<拦截器引用名称= " " >在会话中使用自定义身份验证拦截器时不起作用



我想实现会话在我的Struts2应用程序。我正在使用自定义拦截器类AuthenticationIntercepter,那里我正在检查会话是否为空,所以在调用每个动作之前,我正在传递struts.xml文件中的拦截器参考。但是拦截器参考不工作..这是我的struts.xml文件,请帮助我…提前感谢:

<interceptors>
            <interceptor name="authenticationInterceptor"
                class="interceptor.AuthenticationInterceptor"></interceptor>
            <interceptor-stack name="secureStack">
                <interceptor-ref name="authenticationInterceptor"></interceptor-ref>
                <interceptor-ref name="defaultStack"></interceptor-ref>
            </interceptor-stack>
        </interceptors>

<global-results>
<result name="login" type="redirect">/Login.jsp</result>
</global-results>

<action name="loginform" class="login.LoginAction" method="execute">
   <interceptor-ref name="secureStack"/>
   <result name="success" type="redirectAction">/index1.jsp</result> 
 </action> 

AutenticationIntercepter类:

    public class AuthenticationIntercepter implements Interceptor
    {

     private static final long serialVersionUID = 5283017925296746927L;
     @Override
     public void destroy() {
      // TODO Auto-generated method stub
     }
     @Override
     public void init() {
      // TODO Auto-generated method stub
     }
     @Override
     public String intercept(ActionInvocation actionInvocation) throws Exception 
     {
     Map<String,Object> session=actionInvocation.getInvocationContext().getSession();
    LoginBean user=(LoginBean)session.get("user");
    System.out.println("inside  intercepter clas.."+user);
    System.out.println("inside  intercepter clas.."+user.getUserName());

    if(user==null)
     {
      return ActionSupport.LOGIN;
     }
     return actionInvocation.invoke();
      }

    }

你在拦截器类中做的伪日志可能会导致问题,因为你在检查"user"变量是否为空之前引用了它。这将导致抛出NullPointerException。

对于你的具体问题,我建议检查你的"登出"机制是否正常工作。根据您描述的症状,我猜测当用户注销时,"user"变量没有从会话中正确清除。

相关内容

  • 没有找到相关文章

最新更新