小编典典

Struts 2-在身份验证拦截器之后重定向到正确的操作

java

我在网上找不到任何东西,所以我在这里问。我正在使用strut2,并且有一个私有的操作包,因为某些操作需要登录才能访问。因此,我将其放在我的安全包装中:

<interceptors>
    <interceptor name="authenticationInterceptor" class="com.koorde.interceptor.AuthenticationInterceptor"/>

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

<default-interceptor-ref name="secureStack"/>

<global-results>
    <result name="login" type="redirect">dologin</result>
    <result name="session_error" type="redirect"> html/error/hibernate_session.jsp</result>
    <result name="error" type="redirect"> html/error/hibernate_session.jsp</result>
</global-results>

当然还有其他动作定义。

我的问题如下:

假设用户要访问他的个人区域。他单击personalArea链接,然后将自动在登录页面上重定向(这personalArea是安全的操作)。我想要的是:登录后用户自动重定向(继续操作)到personalArea而不是首页。

因此,我想要的是:当用户由于安全操作而登录系统时,登录后继续执行操作(安全)。

我怎样才能做到这一点?


阅读 213

收藏
2020-09-28

共1个答案

小编典典

一种可能的解决方案是跟踪用户截获其URL的情况。您可以在身份验证拦截器中执行此操作。

String queryString = request.getQueryString();
session.put("savedUrl", request.getRequestURI()+(queryString==null?"":("?"+queryString)));

将全局结果与动态参数一起使用

@Results({
  @Result(name = "return", type = "redirect", location = "${savedUrl}")
})

登录后检查会话savedUrl并返回结果"return"。假定为动态参数提供吸气剂。

2020-09-28