本人写一个winform程序,发现密码验证不太清楚。。。
1、若是登录时,密码验证。根据“用户名”从数据库查询相关数据,取出“密码”,对比输入和取出的密码是否一致来判断登录是否成功。
2、若是修改密码时,要根据主键查询旧密码是否正确。这个时候是把密码传进数据库还是把密码从数据库取出来比较?
3、(修改密码时)若是把密码从数据库取出来比较,在登录的时候就已经把匹配的密码从数据库取出来了,可以用来对比两次密码是否一致,为什么还要根据主键再次访问数据库呢?
这是一个设计方面的问题。用户登录成功后,这登录密码一般是不会进行临时存储的,而在用户使用系统的过程中,随时点击修改密码操作,在这修改密码的操作中同样也是无法获取用户在登录时使用的密码。
登录成功,把密码进行临时存储,有点浪费资源,并且安全性不高、有被垃圾回收的风险。所以在修改密码操作中获取登陆时使用的密码,这个方案不靠谱。
那是不是每次操作密码最好都是从数据库中提取?
@舞在世界: 你觉得哪里安全就在哪里获取,这个根据具体的项目设计来定的。比如密码是存储 在文本文件中,那就直接找对应的文本文件,没法一概而论的
@殇、凌枫: 好的,谢谢
2——你修改密码,可以直接根据你的用户名或者主键什么的修改呀?如果你是根据旧密码进行修改的话,那你最好是将你先搜索出数据库中旧密码,进行比较,一样的时候才进行密码修改
3——既然你已经取出了旧密码,那你将输入的旧密码与取出的密码进行比较就是了,一样的时候就进行密码修改呀,你可以不用主键访问数据库,那你就用登录名和密码进行修改就是了
有的视频讲解就是这么做的,感觉多此一举了。不知道是不是出于什么安全的原因