【求助】SSH问题4
java吧
全部回复
仅看楼主
level 9
实现用户登录功能,不知道下面的逻辑是否有问题。
2014年05月21日 06点05分 1
level 11
为什么要把所有的用户取出来?
直接把username和password传进去,如果返回一个对象就代表数据库有这条信息 如果没有则代表输入错误.
from User as u where u.username= username and u.password = password
2014年05月21日 06点05分 2
下面使用this.getHibernateTemplate().find(hql)这个方法?这样的话不能返回对象吧,返回的是集合。还是说有别的方法?
2014年05月21日 07点05分
好了,解决了。是按你的方法做的。
2014年05月21日 08点05分
回复 陪N1起走到老A :一般的做法是先根据 用户名去取 用户列表 找不到说明 用户名不存在,然后在比较取出来的用户 的密码和输入密码,不匹配说明密码不对
2014年05月21日 08点05分
回复 陪N1起走到老A :如果直接用 用户名 和密码作为条件 无法判断到底是密码不对还是用户名不存在,你只能给个笼统的 用户名或密码不正确的提示
2014年05月21日 08点05分
level 7
你的service里面 要遍历这个UserList, 然后取出每个user,去一个个的匹配
2014年05月21日 07点05分 4
这样也可以。另一种也可。具体见楼下。
2014年05月21日 08点05分
level 13
from User as u where u.username= :username and u.password = :password
使用findByNamedParam(String hql,String[] paramNames,Object[] paramValues)
你可以根据这个方法封装一个根据Map查询的方法
2014年05月21日 08点05分 5
这个方法我也在网上找到了,不过这种方法不常见吧。
2014年05月21日 08点05分
回复 陪N1起走到老A :[冷]hibernate常用方法,你下面那种拼接sql的方式会产生sql注入的问题
2014年05月21日 08点05分
level 10
楼主你来打我啊![太开心]
2014年05月21日 10点05分 7
level 10
不太懂SSH的东西。不过对于这种用户验证的有两个思路:
1、少用户小并发:将用户输入的用户名作为sql语句where后跟的条件进行查询,如果没有结果,返回用户名错,如果有结果,比对密码与用户输入值是否相符,不符返回密码错,相符则转向到其他页面。
优点:能够返回详细的登陆错误信息
2、多用户大并发:系统启动时执行方法将所有用户存入缓存中,校验时根据用户名查询值,校验密码。
优点:查询速度快。缓存可以有很多种实现方式,最简单的方式是定义一个常量并赋值。常规的方法是用redis实现缓存或者echcache实现本地缓存或者用sphinx实现快速查询。
2014年05月21日 11点05分 8
1