我想根据用户访问权限限制对某些JSF页面的访问.如何在JSF中做到这一点?我找到了两个链接:通过直接更改JSF中的URL来限制用户访问页面.但答案没有提到如何阻止访问页面.用response.sendError?第二个链接:JSF:如何控制JSF中的访问权限和权限?
还有什么最好使用PhaseListener或使用ServletFilter?
但答案没有提到如何阻止访问页面.有了response.sendError吗?
这完全取决于您的选择.这一切都取决于您的业务需求.要重定向到登录页面吗?就这样做!
response.sendRedirect(request.getContextPath() + "/login.xhtml");
Run Code Online (Sandbox Code Playgroud)
或者,你想显示一个可怕的和用户不友好的HTTP 401错误?就这样做!
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
Run Code Online (Sandbox Code Playgroud)
至少,除了继续对受限资源的请求之外的任何事情chain.doFilter().否则整个限制将毫无意义.
还有什么最好使用PhaseListener或使用ServletFilter?
servlet过滤器旨在拦截HTTP请求,并且只在FacesServlet调用之前运行一次,因此能够挂钩非JSF请求,具体取决于URL模式.
根据当前的JSF阶段,相位监听器被设计为在JSF请求期间拦截每个JSF阶段(有6个)的前后条件并运行2到12次.
你的常识说什么?对于允许/阻止HTTP请求(因而不是JSF阶段)的非常简单的工作,哪一个看起来更简单有效?只需使用合适的工具即可完成工作.
对于您感兴趣的情况,这是一个相当完整的此类授权过滤器示例:会话过期的授权重定向不适用于提交JSF表单,页面保持不变.
| 归档时间: |
|
| 查看次数: |
4519 次 |
| 最近记录: |