我使用的是的PhaseListener,我可以看到我的凭据,请直接从RESTORE_VIEW一路攀升至INVOKE_APPLICATION和RENDER_RESPONSE。 这都有道理。 我想最好的做法是什么,当谈到验证这些凭据。
我想我的可以在RESTORE_VIEW验证。 我敢肯定,我不想等到UPDATE_MODEL,因为我认为这可能是一个安全隐患。 虽然多了几分不确定我是否应该让通过APPLY_REQUEST和PROCESS_VALIDATIONS相运行...
有任何想法吗?
我使用的是的PhaseListener,我可以看到我的凭据,请直接从RESTORE_VIEW一路攀升至INVOKE_APPLICATION和RENDER_RESPONSE。 这都有道理。 我想最好的做法是什么,当谈到验证这些凭据。
我想我的可以在RESTORE_VIEW验证。 我敢肯定,我不想等到UPDATE_MODEL,因为我认为这可能是一个安全隐患。 虽然多了几分不确定我是否应该让通过APPLY_REQUEST和PROCESS_VALIDATIONS相运行...
有任何想法吗?
在实践中, RESTORE_VIEW
阶段是强制访问控制的JSF资源的理想场所。 这是页面的请求生命周期的第一阶段; 真的没有任何理由让一个要求进步比任何进一步的,如果它不授权。
除了事实,你真的不应该大惊小怪阶段和的PhaseListeners这样的基本服务的访问控制,你可能会遇到的一个问题是,(在这个答案的时间)一个PhaseListener
不注射目标。 这意味着该@EJB
, @Inject
和@ManagedProperty
不会在工作的PhaseListener。 除非你让一个@ManagedBean
。 这意味着,服务,可能需要执行的PhaseListener在认证检查将不可用。 JSF2.2有望使一切范畴内注入目标虽然
虽然我不是“最佳实践”的权力,我的最佳实践的想法是一种清洁,可维护,可重用的方法来解决问题。 IMO,访问控制到页面的两个干净和微创方法
Servlet过滤器 :这是网络资源访问控制的测试和真正的方法,是JSF无关。 你不必担心阶段或诸如此类的事和几乎所有的J2EE。 这是一个Servlet过滤器保护JSF资源的一个非常简单的例子。
JSF页面级别的身份验证 :使用JSF preRenderView
事件,你可以验证访问JSF页面。 这期间固有踢RESTORE_VIEW
阶段并有大量资源放在这里就其使用方法:
理想情况下,你应该请求通过其正常的生命周期,这会给你最大为他们的初衷利用阶段的优势。 说我想介绍一个验证的某一个领域,但请求被之前的处理,那么我将有唯一的选择将是移动验证程序的逻辑在前面的代码本身,这将使其成为累赘。
所以我的建议是让申请办理其原有的生命周期。
和你的声明:“我敢肯定,我不想等到UPDATE_MODEL,因为我认为这可能是一个安全隐患。” 将需要为这句话一些事实,然后我们可以讨论的替代解决方案。