【问题标题】:Sending configuration value for logout after session invalidate in Struts 2在 Struts 2 中会话无效后发送注销的配置值
【发布时间】:2014-07-15 14:09:05
【问题描述】:

我有一个 Struts 2 Web 应用程序。

目前,当用户点击注销 URL 时,我们会调用注销操作,并在方法中调用session.invalidate()。如果成功了,我们就打电话给logout.jsp

logout.jsp 中,我们需要重定向到另一个链接。此链接目前在 JSP 中进行了硬编码。

测试和生产中的链接不同,因此我们在测试和生产中部署时必须对此链接进行更改。我们有从外部文件获取值的实用程序。但由于会话无效,我们无法在会话中设置值并在 JSP 中检索。

最好的方法是什么?

【问题讨论】:

    标签: java jsp authentication session struts2


    【解决方案1】:

    在启动时将值放在应用程序上下文中并从同一位置检索它。

    没有理由在会话中放置任何不是每个用户值的内容。

    【讨论】:

    • 但是我们将在logout.jsp??中检索应用程序上下文值??
    • @paramupk 当然,为什么不呢?即使是基本的 JSP EL 也会自动在应用上下文中搜索值。
    【解决方案2】:

    如果您需要会话来执行此操作,您可以在会话无效之前配置结果。

    配置结果后,您可以在其中对要重定向的操作或 URL 使用动态参数,您不再需要 JSP 来执行重定向。

    重定向结果可以在不渲染 JSP 的情况下做到这一点。

    示例取自Redirecting to another action with unknown amount of parameters in Struts 2的回答。

    您也可以保存查询字符串而不是参数映射。

    String params = request.getQueryString();
    

    要将参数动态添加到 redirectAction 结果,您应该在动态参数中使用 OGNL。

    <param name="actionName">${previousAction.name +'?'+ parameters}</param>
    

    假设您有一个参数获取器,并从保存先前查询字符串、操作名称和命名空间的会话中对其进行初始化。

    【讨论】:

    • 当您说结果时,您是在谈论struts.xml中的结果吗??
    • 不一定struts.xml 它可以是约定或其他配置提供程序结果。如果您使用的是 xml 配置,请使用 &lt;result&gt; 标签。见stackoverflow.com/a/17838591/573032
    猜你喜欢
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 2011-03-05
    • 2021-03-14
    • 1970-01-01
    • 2015-01-04
    • 2013-03-14
    • 2021-03-09
    相关资源
    最近更新 更多