【问题标题】:How can I redirect to the original request url with Java EE Security @CustomFormAuthenticationMechanismDefinition如何使用 Java EE Security @CustomFormAuthenticationMechanismDefinition 重定向到原始请求 URL
【发布时间】:2020-09-25 14:45:14
【问题描述】:

当我使用时

@FormAuthenticationMechanismDefinition(
        loginToContinue = @LoginToContinue(
                loginPage = "/login.xhtml",
                useForwardToLogin = false))

然后,在成功登录后,用户会被重定向到他们请求的原始页面。

但我希望对身份验证表单进行更多控制,因此我使用的是:

@CustomFormAuthenticationMechanismDefinition(
        loginToContinue = @LoginToContinue(
                loginPage = "/login.xhtml",
                useForwardToLogin = false))

我在关注这个例子:https://rieckpil.de/howto-simple-form-based-authentication-for-jsf-2-3-with-java-ee-8-security-api/

但问题是现在,在成功登录后,用户总是被重定向到 index.xhtml 而不是他们请求的原始页面。

有没有办法使用 CustomFormAuthenticationMechanismDefinition 实现相同的行为?

【问题讨论】:

  • 你将如何使用普通的(非 jsf/facelets)html 页面来做到这一点?并且做google.com/… 给了我一些提示......试过了吗?
  • 哦,您使用的代码应该在minimal reproducible example 示例中是内联的。否则,删除源可能会消失,并且没有人知道您的代码是什么。您发布的链接中的代码与我在 java-ee 安全规范中的示例中阅读的代码之间存在很大差异。如果您发布minimal reproducible example,我会在答案中写一些可能是答案的内容(我手头没有电脑可以测试)
  • 没有太多关于使用新 Java EE 安全 API JSR375 中的 CustomFormAuthenticationMechanismDefinition 的信息。您在上面发布的谷歌搜索查询乍一看并没有产生任何有用的结果。大多数结果是关于 Spring Framework 或在新 API 出现之前的旧版本 Java EE。我也没有看到我发布的示例与规范中的示例:javaee.github.io/security-spec/spec/… 之间存在很大差异。我会调查一下,还是谢谢。
  • 仍然请,请,请在问题中创建minimal reproducible example。否则将被投票关闭

标签: jsf jakarta-ee java-security


【解决方案1】:

我通过将ajax="false" 添加到我的p:commandButton 使其工作。 Java EE 安全框架正确设置了重定向标头,但 PrimeFaces p:commandButton 忽略了它。

【讨论】:

  • 很好……我也错过了这个……对我来说更糟糕的是错过了这个,因为我在以前的本土 AA 框架中遇到了同样的问题,仍然是 minimal reproducible example非常感谢这个问题。 IS 奇怪的是你被重定向到索引页面......你引用的示例没有ajax=false 现在我还是有点困惑。 minimal reproducible example 的更多原因是其中有错误的问题
  • 哦,对了,问题还有一部分。我错误地将javaee.github.io/security-api/apidocs/javax/security/enterprise/…newAuthentication 标志设置为true 作为解决方法,因为我在成功登录后停留在登录页面上。这解释了重定向到索引页面,因为在这种情况下不使用 SEND_CONTINUE。相反,SUCCESS 被返回,示例代码重定向到index.xhtml。我没有时间提供一个干净的例子,但我希望这可以帮助人们遇到同样的问题。
  • minimal reproducible example 可以(几乎)从您发布的链接中复制/粘贴。没有时间创建minimal reproducible example 并不是我们尝试提供帮助的良好动机(甚至相反)。此外,它违反了 SO 准则,并且该问题可能会因为不包含 minimal reproducible example 而被关闭。请花 10-15 分钟创建一个
猜你喜欢
  • 2017-06-01
  • 2012-04-15
  • 1970-01-01
  • 1970-01-01
  • 2014-08-30
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 2011-01-18
相关资源
最近更新 更多