Spring安全注销链接错误:“此链接已禁用,因为导航案例无法匹配。”

时间:2018-05-18 04:05:54

标签: spring jsf spring-security

我有一个非常简单的退出链接

<h:link value="Logout" outcome="#{request.contextPath}/logout" styleClass="nav-link" />

它给了我错误This link is disabled because a navigation case could not be matched.

但是,如果我使用表格注销如下,它可以工作:

<h:form onsubmit="this.action='#{request.contextPath}/logout';">
    <p:commandButton value="Logout" ajax="false" />
</h:form>

这是我为注销配置安全性的方法:

http.logout().logoutUrl("/logout").logoutSuccessUrl("/").invalidateHttpSession(true);

我可以知道问题出在哪里吗?

更新

即使我硬编码完整路径,错误仍然存​​在。

我有一个contextPath/login链接,指向login.xhtml,如果我从项目目录中删除login.xhtml,则会显示相同的错误消息。因此我怀疑问题是因为JSF在我的项目目录中找不到任何名为logout的文件。关于如何解决这个问题的任何想法?

更新2

我发现如果我使用h:outputLink那么问题就会解决,但我不想强迫使用h:outputLink,而是想知道问题的实际原因。是因为h:link绑定到JSF导航规则吗?有没有办法解决这个问题?或者我必须使用替代方案,例如h:outputlink

0 个答案:

没有答案