Jsf 显示欢迎页面,但不重定向到登录页面

Jsf 显示欢迎页面,但不重定向到登录页面,jsf,j-security-check,Jsf,J Security Check,我有下面的web.xml文件,我将欢迎页面保存在安全检查中,以便它将重定向到登录页面,但欢迎页面显示时没有用户登录。这是正确的方法吗? /GISPages/welcome.xhtml jdbc/Gis\u WebApp javax.sql.DataSource 容器 受保护页 /吉斯佩奇/* 登记器 管理 形式 居住 /login.xhtml /noauth.xhtml 登记器 管理 安全约束保护URL模式,但在这种情况下,由于欢迎文件设置,您的默认URL将更改为类似http://:port

我有下面的web.xml文件,我将欢迎页面保存在安全检查中,以便它将重定向到登录页面,但欢迎页面显示时没有用户登录。这是正确的方法吗?


/GISPages/welcome.xhtml
jdbc/Gis\u WebApp
javax.sql.DataSource
容器
受保护页
/吉斯佩奇/*
登记器
管理
形式
居住
/login.xhtml
/noauth.xhtml
登记器
管理

安全约束保护URL模式,但在这种情况下,由于欢迎文件设置,您的默认URL将更改为类似http://:port/webcontext/的内容,并将显示welcome.xhtml。而根据定义的URL模式,受保护的URL应该具有类似http://:port/webcontext/GISPages/welcome.xhtml的URL 由于URL模式与应用程序服务器不匹配,因此呈现页面内容

唯一对我有效的解决方案是在prerender事件中检查UserPrincipal

<f:event type="preRenderComponent"
listener="#{bean.forwardToLoginIfNotLoggedIn}" /> 

如果UserPrincipal返回null,则重定向到login.xhtml


为打开一条旧线而道歉。我最近遇到了类似的问题,因此认为这可能对某些人有用。

web资源集合
标记下,您有一个重复的
url模式
条目。这可能是问题的原因。文件的其余部分在哪里?@maple_shaft删除了这些,但仍然存在相同的问题。我已经添加了映像文件。只是将它与我的配置进行了比较。唯一的区别是login.xhtml和error.xhtml也在受保护的文件夹中,而不是在外部。只是一个猜测。@mathandy没有区别,它保存在受保护的文件夹中。它是哪台服务器?顺便说一下,欢迎文件路径中的文件夹有点奇怪。尽管大多数服务器都会接受它,但欢迎文件最初应该是文件的唯一文件名/扩展名,服务器在请求文件夹时应该显示该文件,而不管请求的文件夹本身是什么。实际上,您应该将
welcome.xhtml
作为欢迎文件,并通过过滤器或托管bean(post)构造函数以某种方式从根文件夹中的一个重定向到所需文件夹中的另一个。
<f:event type="preRenderComponent"
listener="#{bean.forwardToLoginIfNotLoggedIn}" />