验证登录

                  验证登录
开发工具与关键技术:VS   MVC	
作者:彭春怡
撰写时间:2019/5/2

IT的朋友们好,今天我们来认识一下登录的操作。登录在我们的生活的是经常接触的,QQ登录,微信登录,游戏登录等等。不同的网页会有不同的登录方式,比如QQ登录跟微信登录都不一样啊。不过都离不开用户名,跟密码。
今天我所介绍的登录有:用户名、密码、验证码、还有一个记住我、再有就是登录身份。用户名与密码,相信大家都是知道的。验证码:有手机验证,也有图片验证,手机验证本人还不了解。今天我要介绍的是图片验证,就像微信找回密码时用到的图片验证。记住我:是平时大家登录进去后,如果点击记住我,下次登录的时候,它就会显示出你上次登录时填写的用户与密码。登录身份呢,就是你是什么身份,以什么身份登录进去的,当然不同的身份登录进去看到的页面内容也是不一样的。
接下来让我们一起了解验证登录:
图1:
在这里插入图片描述
首先是创建一个方法,创建方法需要的关键字,“public”是创建方法的关键字。后面是一个参数“ActionResult”是自定义的意思,意思是自己给方法定义一个名称,“UserLogin”就是自己给方法定义的名称。过号里面的PW_User是数据库的表,就是我们在操作时需要的表,还有pwUser是参数,是视图转过来的数据。要自己定义一个记录状态的变量“string strMsg = “fail”;”strMsg就是自己定义的变量,因为"fail"是字符串,所以用string类型。
接下来就是获取页面传递的变量,页面上传过来的页面有用户名、密码、验证码、记住我、登录身份。登录身份就是用户类型ID。因为它们都是字符串,所以用string。大家在登录的时候,首先填写的都是用户名吧。这里也是同样的,第一获取从页面上传过来的用户名变量。首先是string。pwUser是页面上转过来的参数,包含用户变量与密码变量。strUserNuber就是pwUser+UserNuber。UserNuber是用户名pwUser的一小部分,最后等于strUserNuber。下面获取密码变量也是一样的,Password是pwUser的一小部分,最后等于strPassword。
验证码、记住我、登录身份就是不一样的了。它们是通过请求页面上的字符串来获取页面上的数据,请求的字符串呢就是[ ]过号里面的。最终等于它们的局部变量,strValidCode、strIsRember、strUserTypeClass。它们分别为验证码、记住我、登录身份(用户类型ID)。就这样,图1解释完毕。

图2:
在这里插入图片描述
if是如果的意思,判断strUserNuber、strPassword、strValidCode、strIsRember、strUserTypeClass是否为空。如果为空就执行下面的代码,获取session存放的验证码。判断sessionValiCode字符串是否为空,给它一个try捕抓错误,再给图片字符串一个返回当前对象的字符串“ToString()”。catch是指浏览器发觉数据出现异常,所有直接跳到catch。是指应用程序在执行的过程中发生的错误。Exception e是局部变量,
Console.WriteLine(e);不会产生输出,主要是为了避免VS提示e未使用的警告。
图3:
在这里插入图片描述
If是如果的意思,判断填入的验证和session中的验证码是否一致。给它一个try捕抓浏览器在执行判断填入的验证和session中的验证码是否一致的是出现的错误。给它一个单表查询,判断账号是否存在。首先是一个数据库的表,就是要查询的表,后面一个自定义命名。然后表的来源:tbUser来自于页面上的表PW_User。myEntities是实例化的:“CQUPTEntities myEntities = new CQUPTEntities();”这句代码是myEntities实例化的代码。查询的条件:拿页面账号作为条件查询数据库表PW_User。拿页面上的最后选择tbUser表,UserNuber表等于数据库的strUserNuber表作为条件,或者页面上的TiVoidNo等于true做为条件。最后选择tbUser表。给它一个返回序列的元素,如果该序列没有包含一个元素,就会发生数据异常。图3最后一句代码:对页面转过来的密码进行AES265后,进行加密。

图4
在这里插入图片描述
如果dbUser中的Password等于password,就执行下面的查询代码。判断账号和选择的权限跟注册账号的账号权限是否对应。首先去掉strUserTypeClass的空格,Trim()是去掉的空格的意思。然后下面就是一个多表查询,是通过用户表连接用户角色明细表再连接用户类型表组成的多表查询。var提供用于列表进行搜索、排序与操作的方法,然后自定义一个命名。表的来源:tbUser来自于PW_User表。表的连接:就是用户表、用户角色明细表、用户类型表的连接。查询的条件:UserID = = dbUser.UserID或者tbUserType.typeClass = = strUserTypeClass两个条件。最后就是把需要查询的数据选择出来,给它一个返回值。
图5
在这里插入图片描述
如果listUserType中的Count>0,就执行下面的代码。它下面的代码是设置session机制,用户身份验证完成后,开始处理登录信息。
第一获取用户类型名称:因为userTypeName是string类型,所以用string字符。ListUserType[0]是第一个的意思,UserType是listUserType[0]一小部分,它们等于userTypeName。Trim()作用是移除前后的所有空白字符。
第二获取用户类型ID:跟上面获取用户类型名称是一样的。它们不一样的地方是userTypeId是int类型与不用去掉空白字符。
第三设置Session的UserID、UserTypeID、登录的时间、用户的类型。转递UserID:因为UserID是dbUser的一小部分,所有它们相当于一个ID。最后把它们转递到Session[“UserID”]里面去。转递UserTypeID:把userTypeId转递到Session[“UserTypeID”]里面。转递登录时间:将当前的时间对象的值转换为它同等效字符串,然后转递到Session[“ServerTime”]里面。最后一个用户的类型,strUserTypeClass转递到Session[“UserTypeClass”]里面。Session的设置就完成了。
图6:
在这里插入图片描述
图6是设置cookie。如果strIsRember等于true,就执行它下面的代码。“HttpCookie cookie = new HttpCookie(“user”);”是删除cookie,HttpCookie是提供创建与操作cookie的类型安全方法。new是创建然后命一个新的名字。 一句代码的意思是,创建一个新的cookie并给它一个新的命名,然后将“user”保存在cookie里面。 这句话跟下面图7里的一句代码是一样的,意思也相同。
“cookie.Expires = DateTime.Now.AddDays(7);”是给cookie的数据做一个保存的时间,AddDays(7)过号里的7就是设置数据的保存时间,如果7天过去的数据将过期。
下面呢就是设置cookie的用户名、密码与用户类型。然后响应Cookies,添加一个新的cookie。
图7:
在这里插入图片描述
如果登录成功,便会跳到else。执行else的代码。
“HttpCookie cookie = new HttpCookie(“user”);”是删除cookie,HttpCookie是提供创建与操作cookie的类型安全方法。new是创建然后命一个新的名字。 一句代码的意思是,创建一个新的cookie并给它一个新的命名,然后将“user”保存在cookie里面。
“cookie.Expires = DateTime.Now.AddDays(-1);”这句代码是通过设置Cookie的过期时间为负数,强制使Cookie过期。Expires设置cookie的过期日期与时间。DateTime表示时间的上一刻,通常是指当时的时间。Now用来获取DateTime的对象的,获取的对象设置为此计算机的日期与时间。AddDays是返回一个新的时间,让它把过号里添加的时间添加到DateTime里面。
“Response.Cookies.Add(cookie):意思是响应Cookies,然后添加一个新的cookie。
图7解释完毕。
图8
在这里插入图片描述
图8有四个else,一个catch,我分别用:1、2、3、4、5做为它们的顺序。来一个个解释。
1.如果你输入的账号与登录的角色不匹配,浏览器就会执行else,strmsg就会提示“账号和登录人的角色不匹配!”。
2.如果你的密码是错误的,浏览器就会执行else,strMsg提示“当前输入的密码是错误的!”
3.如果浏览器在执行的过程中发觉到错误,就会直接跳到catch。执行catch,strMsg提示“当前输入的账号不存在!”,catch是浏览器执行的时候发觉错误的意思。Exception表示在应用程序执行的过程中发生的错误。如果Exception e就是局部变量。Console是控制台,“Console.WriteLine(e);”是指控制台输出的错误。
4.如果验证码输入不匹配的话,浏览器就会执行else,strMsg提示“验证码不匹配!”。
5.如果页面填写不完整的话,浏览器执行else,strMsg提示“请把页面填写完整!”。
return是返回值,每个方法都需要给它一个返回值,要不然方法的命名便会报错。返回值是strMsg,除了返回值,还要给它一个提交,“AllowGet”是提交的意思。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值