Trong ứng dụng JSF của tôi, có một Filter
được sử dụng để kiểm tra quá trình authenticati0n. Khi xác thực thất bại, bộ lọc chuyển hướng đến login.xhtml
.Đặt FacesMessage theo Bộ lọc
Tôi làm cách nào để chuyển FacesMessage
vào trang đăng nhập của mình từ Filter
?
Mặc dù, tôi đã sử dụng bên dưới, Không được.
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, null));
AuthenticationFilter.java
public class AuthenticationFilter implements Filter {
private FilterConfig config;
private ServletContext servletContext;
public void init(FilterConfig filterConfig) {
config = filterConfig;
servletContext = config.getServletContext();
}
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
HttpSession session = httpRequest.getSession();
User user = (User) session.getAttribute(Constants.LOGIN_USER);
if (user == null) {
...
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, null));
String loginView = httpRequest.getContextPath() + Constants.LOGIN_PAGE;
httpResponse.sendRedirect(loginView);
} else if (!user.getRole().equals(Role.SYSTEM_ADMINISTRATOR)) {
....
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, message, null));
String loginView = httpRequest.getContextPath() + Constants.LOGIN_PAGE;
httpResponse.sendRedirect(loginView);
} else {
filterChain.doFilter(servletRequest, servletResponse);
}
servletContext.log("Exiting the filter");
}
public void destroy() {
//Nothing to do.
}
}
cảm ơn sự hỗ trợ của bạn. – CycDemo
Bạn được chào đón. – BalusC