j_security_check url问题

时间:2010-08-19 22:09:09

标签: jsf j-security-check

希望你能帮我解决这个问题: 我正在使用j_security_check并遇到此问题

我有一个个人资料页面,必须限制在任何未发送的用户, 所以我在web.xml文件中添加一个安全约束,并且工作正常 如果我尝试通过地址栏访问,这将显示登录页面完全正常

现在的问题是:在我的索引页面示例中:

  

http://localhost/mySite/index.xhtml

有一个链接

  

<h:commandLink action="user/Profile" />

这会将我重定向到个人资料页面,但网址仍然相同

  

http://localhost/mySite/index.xhtml

所以j_security_check不显示登录页面 据我所见,j_security_check与url一起工作,而jsf则不行 如果在个人资料页面中按下指向ex:myImages的链接,那么现在网址会显示:

  

ex:http://localhost/mySite/user/Profile.xhtml

为什么会这样?有没有什么办法解决这一问题 ?? 提前致谢

我一直在使用的替代方案就像是

  

<a href="user/Profile.xhtml" >Profile</a>

这显示了我的登录页面,但是如果我转到index.xhtml并按下配置文件,则找不到该页面,因为我将其重定向到:

  

ex:http://localhost/mySite/user/user/Profile.xhtml

1 个答案:

答案 0 :(得分:1)

<h:commandLink action="user/Profile" />

h:commandLinkh:commandButton当前页面发出HTTP POST请求(h:form),然后转发到给定的资源。

您不希望使用POST进行页面到页面的导航。这不仅是糟糕的用户体验(URL不会改变,在浏览器历史记录中返回/转发时会出现不明显的行为),而且SEO友好(搜索机器人不会将POST编入索引)。

如果您根本不需要任何JSF-ish功能,则需要用h:outputLink替换它,或者如您所知,用简单的<a>元素替换它。

关于你指向错误网址(带有重复路径)的最后一个问题:当你使用h:outputLink时,这就解决了。然后,JSF将考虑当前的上下文路径。