我在网上找不到任何东西,所以我在这里问。我正在使用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而不是首页。
personalArea
因此,我想要的是:当用户由于安全操作而登录系统时,登录后继续执行操作(安全)。
我怎样才能做到这一点?
一种可能的解决方案是跟踪用户截获其URL的情况。您可以在身份验证拦截器中执行此操作。
String queryString = request.getQueryString(); session.put("savedUrl", request.getRequestURI()+(queryString==null?"":("?"+queryString)));
将全局结果与动态参数一起使用
@Results({ @Result(name = "return", type = "redirect", location = "${savedUrl}") })
登录后检查会话savedUrl并返回结果"return"。假定为动态参数提供吸气剂。
savedUrl
"return"