使用JSF 2.0实现重定向登录的正确方法是什么?

问题描述 投票:5回答:1

我的部分网站只能由授权用户访问。 假设用户输入属于仅授权部分的页面a.html。

如果我要使用servlets / JSP,我可以编写一个过滤器来检查用户是否已登录,如果没有,则将其重定向到登录页面。 成功登录后,用户将被重定向到他最初想要访问的页面,在本例中为a.html。 (页面地址可以存储在请求中)。

在JSF 2.0中实现此类场景的正确方法是什么?

servlets jsf-2 servlet-filters
1个回答
3
投票

用过Filter就是这样做的。 很高兴知道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");
}
© www.soinside.com 2019 - 2024. All rights reserved.