当前位置: 首页 > 面试题库 >

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

闻人宇定
2023-03-14
问题内容

我在网上找不到任何东西,所以我在这里问。我正在使用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而不是首页。

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

我怎样才能做到这一点?


问题答案:

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

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

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

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

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



 类似资料:
  • 问题内容: 我们的应用程序要求用户登录才能查看任何内容。如果没有有效的用户会话,则会拦截对所有页面的访问,并弹出登录表单。我希望拦截器在显示登录表单之前记住原始请求URI,并在登录表单验证成功后重定向到该请求。我尝试按照Struts2Redirect进行身份验证拦截器后的更正操作 但是,由于,我得到了空白页。 从未被调用。 解决方案: 完全擦除@Results批注,而不是调用 问题答案: 如果未登

  • 我正在laravel中创建一个多身份验证系统,其中有两种类型的用户:管理员(由我创建)和用户(使用本地laravel身份验证系统)。 如果我以用户身份登录,当我尝试访问登录页面时,当我已经登录,它会将我重定向回仪表板,但如果我以管理员身份登录,当我再次访问管理员登录页面时,它会让我再次登录,尽管已经作为管理员登录。 以下是我的重定向身份验证类代码: 有人能解释一下发生了什么事吗?

  • 我目前正在使用FirebaseAuth和web小部件库firebaseui web开发基于VueJS的登录流原型。 成功认证后(无论是< code>password还是< code>google provider ),小部件加载栏会不断重复,firebaseui-web不会触发其< code > signinseccesswithauthresult 回调。但是对< code > identity

  • 默认情况下,身份验证后的Spring Security会将您重定向到您之前尝试访问的受保护页面。 当我实现自己的成功处理器时 我不能达到同样的效果。我试图重定向到referer,但在本例中,referer是/en/login页面。 基本上: 用户尝试访问受保护的url 将用户重定向到页面 验证后,用户应再次重定向到 如何使用custom successHandler实现这一点?

  • 我想重定向用户回到他们在Laravel 5成功登录后登录页面之前查看的页面。目前,如果用户写了一个错误的用户名/密码,他会被重定向到登录页面,显示错误,我想保持这种方式。另外,我希望当用户点击页面上的登录按钮时,以及当用户被自动重定向到登录页面时,此功能能够正常工作。 在我看来 是这里的关键,但我不知道如何让它“重定向到不是登录页的最后一页”。感谢您的帮助。

  • 主要内容:Struts2框架的拦截器:,如何使用拦截器?,创建自定义的拦截器,创建拦截器类:,创建动作类:,创建视图,创建页面:,配置文件,堆叠多个拦截器:拦截器的概念是Servlet过滤器或JDK代理类一样的。拦截器允许横切功能分开实现的动作,以及框架。使用拦截器,可以实现如下: 提供预处理行动之前被称为逻辑。 提供后处理逻辑动作后被调用 捕获异常,这样可以进行替代处理。 Struts2框架提供的许多功能都使用拦截实现的例子包括异常处理,文件上传,生命周期回调和验证等事实上作为Struts2的