JSF 重定向不会停止页面呈现

  • 本文关键字:重定向 JSF jsf
  • 更新时间 :
  • 英文 :


我们使用JSF的方式非常简单。我们所做的只是实现包含一些Java代码的标签。

我已经实现了一个"安全"标签,每当用户没有登录时,它就会发送302重定向回登录页面:

// make them log in
ctx.getExternalContext().redirect("login.xhtml");
ctx.responseComplete();

问题是redirect()方法无法停止页面的其余部分。页面下方的标签正在被执行。这是一个问题,因为如果未登录的用户让浏览器忽略重定向,他们可能会看到不该看到的东西。

我如何让responseComplete()做我认为应该做的事情?

在servlet过滤器中实现与登录相关的逻辑总是更好的,如下所示:

  1. 为要保护的URL模式实现筛选器
  2. 在过滤器中,检查用户是否已登录(可以只检查用户会话中是否存在Username/UserId)
  3. 如果用户未登录,请将用户重定向到基于HTML的登录页面
  4. 如果用户已登录,请允许用户访问资源

有很多方法(可能比这更好)可以实现这一点,但这是最基本的方法。

也许您可以使用标志来验证用户是否已登录。
然后,可以在不想渲染的标记中使用render=#{managedBean.logged}属性
这只是一个变通办法。。。你提供的信息实在帮不了多少忙。

试试吧!

ctx.getExternalContext().dispatch("login.xhtml");
ctx.responseComplete();

相关内容

  • 没有找到相关文章

最新更新