我有一个个人资料页面,必须限制在任何未发送的用户, 所以我在web.xml文件中添加一个安全约束,并且工作正常 如果我尝试通过地址栏访问,这将显示登录页面完全正常
现在的问题是:在我的索引页面示例中:
有一个链接
<h:commandLink action="user/Profile" />
这会将我重定向到个人资料页面,但网址仍然相同
所以j_security_check不显示登录页面 据我所见,j_security_check与url一起工作,而jsf则不行 如果在个人资料页面中按下指向ex:myImages的链接,那么现在网址会显示:
为什么会这样?有没有什么办法解决这一问题 ?? 提前致谢
我一直在使用的替代方案就像是
<a href="user/Profile.xhtml" >Profile</a>
这显示了我的登录页面,但是如果我转到index.xhtml并按下配置文件,则找不到该页面,因为我将其重定向到:
答案 0 :(得分:1)
<h:commandLink action="user/Profile" />
h:commandLink
和h:commandButton
向当前页面发出HTTP POST请求(h:form
),然后转发到给定的资源。
您不希望使用POST进行页面到页面的导航。这不仅是糟糕的用户体验(URL不会改变,在浏览器历史记录中返回/转发时会出现不明显的行为),而且SEO友好(搜索机器人不会将POST编入索引)。
如果您根本不需要任何JSF-ish功能,则需要用h:outputLink
替换它,或者如您所知,用简单的<a>
元素替换它。
关于你指向错误网址(带有重复路径)的最后一个问题:当你使用h:outputLink
时,这就解决了。然后,JSF将考虑当前的上下文路径。