Jsf 2 是否可以解析导航结果以验证它?

Jsf 2 是否可以解析导航结果以验证它?,jsf-2,jsf-2.2,Jsf 2,Jsf 2.2,我有一个WebFilter,可以重定向到我的应用程序中的登录页面。为了重定向回引用页面,我还添加了一个名为redirectOnLogin的视图参数,然后在成功登录时使用该参数来执行最终导航 如果要操纵这个查询参数,很容易引发JSF导航错误。因此,我想通过检查结果是否有效来预防这种情况,但我还无法发现预先验证JSF结果的机制。最简单和最好的方法是确保redirectToLogin参数不能被操纵。或者检测到操纵 你可以(至少)用两种方法解决这个问题 获取原始页面名称,向其添加“salt”并创建哈希

我有一个WebFilter,可以重定向到我的应用程序中的登录页面。为了重定向回引用页面,我还添加了一个名为redirectOnLogin的视图参数,然后在成功登录时使用该参数来执行最终导航


如果要操纵这个查询参数,很容易引发JSF导航错误。因此,我想通过检查结果是否有效来预防这种情况,但我还无法发现预先验证JSF结果的机制。最简单和最好的方法是确保redirectToLogin参数不能被操纵。或者检测到操纵

你可以(至少)用两种方法解决这个问题

  • 获取原始页面名称,向其添加“salt”并创建哈希
  • Addin这在登录服务器的请求中有
  • 确保它由登录服务器返回(可能将其作为#添加到返回页面或作为参数)
  • 在“redirectOnLogin”页面上收到它时,使用页面名称、相同的salt并以相同的方式创建一个哈希。比较它们,如果它们匹配,就可以了,如果它们没有抛出错误
  • 或者你可以

  • 将“redirectOnLogin”页面存储到会话中
  • 检查从登录服务器返回的页面是否与您最终访问的页面匹配

  • 谢谢你的建议!这两种方法都会起作用。事实上,我已经按照这些思路进行了思考,但我仍然想知道有问题的机制是否存在或是否可以创建。我从FacesContext的几个层次深入检查了所有方法,没有找到任何返回“真”或“假”的方法,以查看是否存在视图(据我所知)。但如果它存在或不存在,你将如何处理该结果?如果它不存在,你将得到一个404。如果它确实存在?让它过去(不想知道它是否被操纵)?因此,唯一可能知道这是否可能的人是BalusC,但我不确定他是否会为这个理论问题提供答案。干杯……好吧,如果结果无效,我会记录有关所述事件的信息并重定向“回家”相反。如果它是有效的,我会去那里。毕竟,如果用户没有去那里的凭据,他只会被重定向回“家”。谢谢你的输入!是的,我仍然希望看到巴卢斯从帽子里拔出一只兔子。上次我问这样的问题,他把想要的功能放到了OmniFaces中。:)B=不知道如果有解决方案(我认为没有),他是否会把它放在那里,因为当它在建议的解决方案中“错误”时,您仍然可以记录它。而且安全解决方案不应该依赖于mvc解决方案(我不会使用jsf视图参数,而是使用通用过滤器,甚至是现有的安全框架)