1

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

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

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

http://localhost/mySite/index.xhtml

有链接

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

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

http://localhost/mySite/index.xhtml

所以 j_security_check 不显示登录页面,就我所见 j_security_check 与 url 一起使用,而 jsf 不显示,如果在个人资料页面中按下指向 ex:myImages 的链接,那么现在 url 显示:

例如:http://localhost/mySite/user/Profile.xhtml

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

我一直在使用的另一种选择是喜欢

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

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

例如:http://localhost/mySite/user/user/Profile.xhtml

4

1 回答 1

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

Ah:commandLink并(由)向当前h:commandButton页面发出 HTTP POST 请求,该页面又转发给给定的资源。h:form

您不想使用 POST 进行页面到页面的导航。这不仅是糟糕的用户体验(URL 不会改变,在浏览器历史中后退/前进时行为不直观),而且对 SEO 不友好(搜索机器人不索引 POST)。

如果您根本不需要任何 JSF-ish 特性,您需要用一个简单的元素替换它,h:outputLink或者如您所见,用一个简单的元素替换它。<a>

至于您最后一个指向错误 URL(路径重复)的问题:当您使用h:outputLink. 然后 JSF 将考虑当前上下文路径。

于 2010-08-19T23:10:17.663 回答