C#实现登录记住密码和自动登录

您所在的位置:网站首页 steam如何记住账号自动登录 C#实现登录记住密码和自动登录

C#实现登录记住密码和自动登录

2024-07-14 18:48:05| 来源: 网络整理| 查看: 265

概述

最近正在做一个小型的餐饮管理系统,其中老师要求我们实现记住密码功能,前一段时间已经完成,今天做一下笔记。 首先我们进行需求分析: 用户点击记住密码功能后应该用本地存储的形式,生成文件。在此借鉴了QQ的登录设计。 我们在使用QQ时可以发现无论用户是否点击记住密码只要在某一台计算机上登录都会把账号记录下来并以下拉框的形式展现。 所以采用这种思想(当然安全性和实用性并不高,只是实现这种思想):用户在登录后在文件中记住一串字符串(用户名:密码 - 是否自动登录)在登录后写入文件这三部分内容文件名使用用户名 初始时例如(bixc:%%-0) 如果选择了记住密码就重新生成一次文件把上次的文件覆盖掉内容为(bixc:***-0) 如果选择自动登录也重新生成一次文件(bixc:***-1)

生成文件 //记住密码 if (cbRemPass.Focused) //只有在获得焦点时才触发(人为操作时会触发) { string path = "../../file/"; string value = comName.Text + ":"; //如果为选中状态 if (cbRemPass.CheckState == CheckState.Checked) { if (comName.Text == "" || txtPass.Text == "") { MessageBox.Show("请输入用户名或密码", "提示"); cbRemPass.Checked = false; } else { user.saveTotxt(path + comName.Text, value + txtPass.Text + "-0"); } } //否则就是不选中,密码用%% else { if (comName.Text != "" || txtPass.Text != "") user.saveTotxt(path + comName.Text, value + "%%-0"); } } //自动登录 if (cbAutoLogin.Focused) { string path = "../../file/"; string value = comName.Text + ":"; if (cbAutoLogin.CheckState == CheckState.Checked) { if (comName.Text == "" || txtPass.Text == "") { MessageBox.Show("请输入用户名或密码", "提示"); cbAutoLogin.Checked = false; } else { user.saveTotxt(path + comName.Text, value + txtPass.Text + "-1"); cbRemPass.Checked = true; cbRemPass.Enabled = false; } } else { if (comName.Text != "" || txtPass.Text != "") { user.saveTotxt(path + comName.Text, value + txtPass.Text + "-0"); cbRemPass.Enabled = true; } } }

之所以加上第一个if判断是因为当我们在选择自动登录时一定是要记住密码的但由于我们是一次行写入文件的(bixc:***-1)所以写一次就够了而在此时需要设置记住密码为已选择状态,但我们还不想触发里边的内容(因为这是选择改变事件)就设置了if (cbAutoLogin.Focused)意思是只有在获取焦点的时候触发,也就是用户点击时。这里的1用来表示用户自动登录,此处作为标志。 这里的 user.saveTotxt(path, value);是用用户类(User)封装的一个函数path指的是存储路径,当然这里就是"…/…/file/"+ comName.Text其实应该在用户安装完程序后创立file文件夹,value指的是存储内容代码如下

public void saveTotxt(string path,string value) { //这里的FileMode要选择创建 FileStream file = new FileStream(path, FileMode.Create, FileAccess.Write); StreamWriter writer = new StreamWriter(file); writer.WriteLine(value); writer.Close(); file.Close(); }

以上是用户点击时生成文件下面介绍窗体加载后的处理

实现登录

这里有一个小bug也就是file文件夹不能存放别的东西,只能由系统生成文件 这里是窗体加载时的代码

string path = "../../file/"; user.Name = ""; int i = 0; //遍历文件夹的内容通过使用文件夹名来当作用户名 foreach (FileInfo file in new DirectoryInfo(path).GetFiles()) { user.Name = file.Name; string strus = User.readFile(path + file.Name); //以“:”和“-”分割字符串是数组填入用户名,密码,是否自动登录(用1来判断) string[] values = strus.Split(new char[2] { ':', '-' }); //想二维数组(users)中每次添加一条记录(一个用户的登录信息) //因为可能有很多的用户从某台计算机登录 users.Add(values.ToList()); comName.Items.Add(users[i][0]); i++; }

在窗体加载后展现窗体 通过不同的标识来识别用户的登录信息状态

if(File.Exists("../../file/" + user.Name)) { comName.Text = users[0][0]; if (users[0][1] != "%%") { txtPass.Text = users[0][1]; cbRemPass.Checked = true; } if (users[0][2] != "0") { cbAutoLogin.Checked = true; user.IsAuto = true; btnLogin.PerformClick();//触发登录按钮 this.Refresh(); } }

这里是把第一个用户的信息添加到文本框 剩下的内容就是在切换下拉框时也是如同这样进行判断并修改选项由于很简单就不演示了 这中想法还有一个不合理的地方就是无法记住上次登录的用户,而在QQ中我们可以看到即是有多个用户当一个用户选择自动登录后以后也就不需要处理就可以登录上去,而如果有多个用户的话只有第一个用户且选择自动登录的可以登录上去其他用户即是选择了自动登录也没有办法被实现,我想的是用时间的先后顺序排序一下,很明显失败了,不过以后会解决的。 附图片: 在这里插入图片描述 在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭