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

标签 java authentication redirect struts2 actionresult

我正在使用 Struts 2,并且有一个私有(private)操作包,因为某些操作需要登录才能访问。所以我的安全包中有这个:

<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 而不是主页。

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

我怎样才能做到这一点?

最佳答案

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

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

使用带有动态参数的全局结果

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

登录后检查 session 中的savedUrl并返回结果“return”。假设为动态参数提供 getter。

关于java - 在 Struts 2 中的身份验证拦截器之后重定向到正确的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18410407/

相关文章:

php - 将所有请求重定向到非 www ssl https

java - Eclipse:如何使用具有外部项目依赖项的 ant 构建可执行 jar?

java - Ebean 支持多线程吗?

asp.net-mvc - MVC - ADFS 身份验证 - ADFS 重定向到本地主机

security - 服务器端处理 JWT token 的最佳实践

apache - 从 IPv4 地址重定向到 127.0.0.1

Java实现检查两条线段之间的交点?

java - aspectj可以给java.lang.String添加方法吗

iphone - 登录到主应用程序

python - pycurl - 302 重定向/页面移动