メソッドを作成したフィルターを使用してセッション管理に取り組んでおり、マネージドビーンアノテーションを使用して、検証の成功をフィルターに送信しようとしています。
@ManagedBean(name = "customer")
@SessionScoped
public class CustomerBean implements Serializable{
public String checkValidCustomer(){
FacesContext context = FacesContext.getCurrentInstance();
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();
HttpSession session = request.getSession(true);
Customer cust = new Customer();
cust.setUsername(getUsername());
cust.setPassword(getPassword());
String returnValue = customerBo.checkValidCustomer(cust);
if(returnValue == "success"){
session.setAttribute("customer", returnValue);
}
else
{
session.setAttribute("customer", null);
}
return returnValue;
そして、retunValue文字列で成功しているので、マネージドBeanアノテーションに値として渡そうとしました。myfilterコードは似ています。
@WebFilter("/faces/*")
public class LoginFilter implements Filter {
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse resp = (HttpServletResponse) response;
String cust = (String) req.getSession().getAttribute("customer");
if (cust != null && cust.equals("success")) {
chain.doFilter(request, response);
} else {
resp.sendRedirect(req.getContextPath() + "/faces/default.xhtml");
}
}
String cust の null 値を取得しています。ログイン用のページを開くと、この Web ページにはリダイレクト ループがあります。どこが間違っているのか教えてください。