我们以非常简单的方式使用JSF。我们所做的只是实现包含一些Java代码的标记。
我已经实现了一个“安全”标记,只要用户没有登录就会将302重定向发送回登录页面:
// make them log in
ctx.getExternalContext().redirect("login.xhtml");
ctx.responseComplete();
麻烦的是redirect()方法不会停止正在呈现的页面的其余部分。页面下方的标签正在执行。这是一个问题,因为如果他们的浏览器忽略重定向,则未登录的用户可以看到他们不应该看到的内容。
如何让responseComplete()完成我认为应该做的事情?
答案 0 :(得分:1)
在servlet过滤器中实现与登录相关的逻辑总是更好,如下所示:
实现这一点有很多方法(可能比这更好),但这是最基本的方法。
答案 1 :(得分:0)
也许您可以使用标志来验证用户是否已登录
然后,您可以在不想呈现的标记中使用render=#{managedBean.logged}
属性
这只是一种解决方法......对于您提供的大量信息无法提供太多帮助。
答案 2 :(得分:0)
试试吧!
ctx.getExternalContext().dispatch("login.xhtml");
ctx.responseComplete();