Servlets 使用JSF2.0实现重定向登录的正确方法是什么?
我的网站的一部分应该只有授权用户才能访问。让我们假设用户将进入页面a.html,该页面属于仅授权的部分 若我使用servlet/JSP,我可以编写一个过滤器来检查用户是否登录,若并没有,则将其重定向到登录页面。成功登录后,用户将被重定向到最初想要访问的页面,在本例中是a.html。(页面地址可以存储在请求中)Servlets 使用JSF2.0实现重定向登录的正确方法是什么?,servlets,jsf-2,servlet-filters,Servlets,Jsf 2,Servlet Filters,我的网站的一部分应该只有授权用户才能访问。让我们假设用户将进入页面a.html,该页面属于仅授权的部分 若我使用servlet/JSP,我可以编写一个过滤器来检查用户是否登录,若并没有,则将其重定向到登录页面。成功登录后,用户将被重定向到最初想要访问的页面,在本例中是a.html。(页面地址可以存储在请求中) 在JSF2.0中实现这种场景的正确方法是什么?只需使用过滤器以同样的方式实现即可。很高兴知道JSF会话范围的托管bean被存储为HttpSession属性,托管bean名称作为键 假设您有
在JSF2.0中实现这种场景的正确方法是什么?只需使用
过滤器以同样的方式实现即可。很高兴知道JSF会话范围的托管bean被存储为HttpSession
属性,托管bean名称作为键
假设您有这样一个托管bean:
@ManagedBean
@SessionScoped
public class UserManager {
private User user;
// ...
public boolean isLoggedIn() {
return (user != null);
}
}
然后您可以在Filter#doFilter()
中检查它,如下所示:
UserManager userManager = (UserManager) ((HttpServletRequest) request).getSession().getAttribute("userManager");
if (userManager != null && userManager.isLoggedIn()) {
chain.doFilter(request, response);
} else {
((HttpServletResponse) response).sendRedirect("login.xhtml");
}
但是,我应该如何实现这一点:“成功登录后,用户将被重定向到他最初想要访问的页面,在本例中为a.html。”?对不起,我知道您已经计算出了这一部分。您可以使用ExternalContext#redirect()
在JSF中发送重定向。@Koray:它继续请求处理。