找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2573|回复: 12

Win Form登录框本地记住密码功能实现

 火.. [复制链接]
  • 打卡等级:即来则安
  • 打卡总天数:29
  • 打卡月天数:1
  • 打卡总奖励:7791
  • 最近打卡:2025-12-13 17:25:16

2540

主题

1353

回帖

2万

积分

管理员

积分
21301
发表于 2021-3-13 19:40:44 | 显示全部楼层 |阅读模式
这段时间在给学生进行软件开发培训过程中,针对用户登录功能常见的记住密码功能,部分学生缺乏编程经验,不知道采用什么方法实现该功能,进而无法编程。本文主要针对记住密码功能实现给初学者提供建议与参考。首先给出记住密码实现页面,点击登录时针对记住密码自动填写用户名与密码。实现效果如下图:

登录窗口记住密码功能实现



功能实现如上图所示,目前主流解决该问题的方法包括:
1、用户名,密码本地文件存储
以二进制文件形式实现对用户登录信息进行本地文件存储,在软件运行load时查询该文件是否存储,如果文件存在则读取用户登录信息并显示到界面控件中。
2、用户,密码Access存储
该方法主要借助简单的数据库Access实现对用户登录信息进行存储,通过本地数据库读写操作实现对用户信息进行读写,进而实现记住密码功能
3、将记住密码状态存储到注册表中
通过注册表读写功能将用户密码状态写入注册表中,通过键值实现状态存储,软件运行时查询注册表记住密码状态,读取相关信息实现记住密码功能。

以上三类方法是当前解决登录功能记住密码的主要方法,结合实际应用难易程度,本文选择实用文件存储方式实现记住密码。基本思路流程及部分代码描述如下:
1、首次登录系统时需要选择是否记住密码,如选择记住密码则查询保存用户名密码文件是否存在,存在删除,不存在创建文件,写入二进制数据。
if(File.Exists("f:/userlogin.bin"))//假设存储文件名称与路径为f:/userlogin.bin { File.Delete("f:/userlogin.bin");//判断是否存在,存在则删除旧文件 }
创建并写入数据:
try { bw = new BinaryWriter(new FileStream("f:/userlogin.bin", FileMode.Create)); bw.Write(user_id);//写入用户ID bw.Write(user_pasd);//写入用户密码 bw.Close(); }  catch(IOException ex) { MessageBox.Show("写入文件失败"+ex.Message);//显示异常信息 }
2、首次登录完成记住密码相关信息文件创建与写入之后下一步就是需要利用创建的文件实现记住密码功能。当用户再次登录时自动填写用户名与密码。实现基本思路就是窗体 load事件中去查询读取文件信息,如果文件读取成功显示用户名与密码,实现代码如下:
if (File.Exists("f:/userlogin.bin")){ /*********读取*******************************/ try { br = new BinaryReader(new FileStream("f:/userlogin.bin", FileMode.Open)); string uname = br.ReadString();//读取用户名 string upasd = br.ReadString();//读取密码 br.Close(); if(uname!="" && upasd != "") { this.textBox1.Text = uname;//写入TextBox this.textBox2.Text = upasd;//写入TextBox this.textBox3.Text = code; //验证码写入TextBox this.checkBox1.Checked = true;//设置记住密码状态 } } catch (IOException ex) { MessageBox.Show("文件读取失败" + ex.Message); }}
以上两部分是实现记住密码的核心思路及实现代码,其中写入数据时在用户点击登录事件中完成的,而显示用户密码与用户名是在窗体加载事件中完成的。当然这种方法也是存在安全问题的,本地文件记住用户密码尽管采用了二进制文件形式进行了读写,或者复杂路径,存储系统盘等形式让一般用户找不到文件,或者找到文件读取不了。但对于有经验程序员还是可以找到文件并以二进制形式读取。综合考虑衡量成本安全,还是可以实用该方法实现记住密码功能。毕竟面对的绝大多数最终用户都不是程序员。


工控课堂 www.gkket.com

0

主题

128

回帖

482

积分

注册会员

积分
482
发表于 2021-3-16 03:04:10 | 显示全部楼层
看了楼主的帖子,不由得精神一振,豁然开朗,牛掰
工控课堂 www.gkket.com

0

主题

330

回帖

2085

积分

高级会员

积分
2085
发表于 2021-3-17 02:44:50 | 显示全部楼层
好东西一定要看看!
工控课堂 www.gkket.com

0

主题

106

回帖

160

积分

新手上路

积分
160
发表于 2025-11-14 07:35:04 | 显示全部楼层
楼主辛苦啦,期待下一篇分享
工控课堂 www.gkket.com

0

主题

120

回帖

198

积分

新手上路

积分
198
发表于 2025-11-14 08:34:19 | 显示全部楼层
不请自来,就想夸一句:太顶了!
工控课堂 www.gkket.com

0

主题

326

回帖

435

积分

注册会员

积分
435
发表于 2025-11-14 10:13:15 | 显示全部楼层
我先占个楼,等下再慢慢看~
工控课堂 www.gkket.com

5

主题

428

回帖

2445

积分

高级会员

积分
2445
发表于 2025-11-16 15:39:50 | 显示全部楼层
水个经验,支持楼主,加油呀
工控课堂 www.gkket.com

0

主题

93

回帖

147

积分

新手上路

积分
147
发表于 2025-11-16 15:47:21 | 显示全部楼层
赞同 + 10086,完全说出了我的想法!
工控课堂 www.gkket.com

0

主题

111

回帖

173

积分

新手上路

积分
173
发表于 2025-11-16 15:47:32 | 显示全部楼层
打卡路过,支持优质原创内容~
工控课堂 www.gkket.com

0

主题

71

回帖

322

积分

注册会员

积分
322
发表于 2025-11-16 15:48:04 | 显示全部楼层
路过打卡,为优质内容疯狂打 call
工控课堂 www.gkket.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|手机版|免责声明|本站介绍|工控课堂 ( 沪ICP备20008691号-1 )

GMT+8, 2025-12-22 12:40 , Processed in 0.082866 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表