如何限制用户访问JSF中的sertain页面



正如标题所说,我如何限制用户访问JSF中的某些页面?我想限制访问两种不同类型的页面。第一种是需要加载参数的页面,如果用户试图在没有任何参数的情况下重定向访问该页面,是否可以重定向?第二个是只有特定用户才能访问的页面。在我的应用程序中,你可以创建和编辑比赛,但我只希望活动的主持人能够访问该活动的编辑页面-目前,如果知道正确的参数,任何人都可以访问该页面。JSF中有什么东西可以让我做到这一点吗?

常规页面访问

看看@WebFilter及其doFilter方法。在内部,您可以检查用户是否已登录,从HttpSession检索会话范围的bean。

@WebFilter(filterName = "UserAuthenticationFilter", urlPatterns =
{
"/sites/user/account.xhtml"
}   , dispatcherTypes =
{
DispatcherType.FORWARD, DispatcherType.REQUEST, DispatcherType.ERROR
})
public class UserAuthenticationFilter extends HttpFilter
{
@Override
public void doProductionFilter(final HttpServletRequest request, final HttpServletResponse response, final HttpSession session, final FilterChain chain) throws IOException, ServletException
{
final UserBean userBean = session.getAttribute("userBean");

// check if logged in and redirect to login page if not
if (userBean.isLoggedIn()
chain.doFilter(request, response);
else
response.sendRedirect(request.getContextPath() + "/login.xhtml");
}
}

特定页面访问

@PostConstruct中检查请求参数,或者在viewActioninitPreRenderView方法中检查更好的请求参数,因为在后两个方法中,您可以访问注入的视图参数。

如果用户没有足够的权限访问数据,则重定向或/和显示人脸消息或执行其他操作。

最新更新