当前位置: 代码迷 >> J2EE >> Web登录验证的有关问题
  详细解决方案

Web登录验证的有关问题

热度:77   发布时间:2016-04-19 22:38:25.0
Web登录验证的问题
先看一下下面的代码
上代码:

///将用户名和密码一起传过来然后到数据库中进行验证
String sql="select * from users where uname=? and upass=?";
PreparedStatement sta=LoginDao.tool.getState(LoginDao.c, sql);

sta.setString(1, us.getUname());
sta.setString(2, us.getUpass());

ResultSet rs=sta.executeQuery();

//问题是,我们知道要是存在这样的用户名和密码那么,这个rs一定不是null
//然而,若不存在这样的用户名和密码,那么rs也不是null(api说的)
//那么,到底怎么样才能判断用户名不存在,或者密码错误等问题呢,在这种情况下怎么返回false呢???

  ResultSet rs=sta.executeQuery();
  String id;
  Integer rang;
  Integer ywcshu;
  if(rs!=null)  //这个条件始终满足,api说的
 {
System.out.println("shizheli ma");
while(rs.next())
  {     
id=rs.getString("id");    //这是是我的做法,但还是不成功
rang=rs.getInt("rang");
ywcshu=rs.getInt("ywcshu");
if(id==null) return false;
us.setId(new Integer(id));
us.setRange(rang);
us.setYwcshu(ywcshu);    
  }
return true;
}   


问题的描述就是上面那样,到底怎么让他在错误的时候能够返回false呢?????
------解决方案--------------------
先根据用户名把用户对象取出来,然后再比较用户对象中的密码。
------解决方案--------------------
引用:
Quote: 引用:

先根据用户名把用户对象取出来,然后再比较用户对象中的密码。

使得,现在是这样搞,但是不这样搞不行吗

不这样搞当然可以,登录验证的方法还是很多的。但是你贴的那段代码会带来SQL注入的安全问题,所以那段代码是不能用来做登录验证的,所以也就没必要纠结null的问题了。
------解决方案--------------------
既然 rs 始终 !=null,那把 if 语句去掉不就行了?如果rs里面没有记录,是不会进入循环的。
------解决方案--------------------
 while(rs.next())
      {                
        id=rs.getString("id");    //这是是我的做法,但还是不成功
        rang=rs.getInt("rang");
        ywcshu=rs.getInt("ywcshu");
        if(id==null) return false;
        us.setId(new Integer(id));                
        us.setRange(rang);
        us.setYwcshu(ywcshu);               
      }
    return true;
改成
while(rs.next())
      {                
        id=rs.getString("id");    //这是是我的做法,但还是不成功
        rang=rs.getInt("rang");
        ywcshu=rs.getInt("ywcshu");
        if(id==null) return false;
        us.setId(new Integer(id));                
        us.setRange(rang);
        us.setYwcshu(ywcshu);     
return true;          
      }
return false;
这样不行么...

------解决方案--------------------
六楼正解,就这样
  相关解决方案