Java 使用筛选器的会话管理
我正在使用我编写的筛选器方法进行会话管理,并使用managedbean注释尝试将验证成功发送给筛选器Java 使用筛选器的会话管理,java,jsf-2,servlet-filters,Java,Jsf 2,Servlet Filters,我正在使用我编写的筛选器方法进行会话管理,并使用managedbean注释尝试将验证成功发送给筛选器 @ManagedBean(name = "customer") @SessionScoped public class CustomerBean implements Serializable{ public String checkValidCustomer(){ FacesContext context = FacesContext.getCurrentInst
@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字符串中获得了成功,所以我尝试将其作为值传递给managedBean注释
@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");
}
}
我得到字符串cust的空值,当我打开页面进行登录时,它显示此网页有一个重定向循环。请告诉我哪里做错了。试试这个
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
System.out.println("Inside the filter.............." );
HttpSession session = request.getSession();
User u = null;
if(session.getAttribute("customer")!=null){
u = (User) session.getAttribute("customer");
}
if (u!= null)
{
System.out.println("user does exits.." + u.getUname() );// u can see who was logged here
chain.doFilter(req, resp);
}else{
System.out.println("user does exits..");
}
在继续使用JSF之前,请尽量容忍
“success”==“success”
是false
。改为坚持等于。而且,是的,单独使用调试器几乎总能为您提供有关如何更正代码的指导,或者至少是关于哪些代码未按预期工作的指导。