处理实现登录的过程

做一个项目不仅仅要做好各个功能所实现的效果,同时也要保证用户的数据安全。登录,在一个项目中是非常重要的,在有些项目中,比如说学校的的一个管理系统,你以不同的身份进入,所看到的、所存储的数据都是不一样的。
我们在登录时所做的操作看似简单,其实也是比较复杂的。或许你只是输入一个账号、密码等数据,然后就能跳转到另一个页面,殊不知它经过了多少处理,那么今天就给大家讲一下登录操作是怎样实现的。
要了解登录,首先要了解Cookie与Session,它们都是储存数据用的。
在这里插入图片描述

Cookie所储存的数据是在用户本地终端的服务器上,简单说就是它的数据是以文本格式保存在浏览器上。端游的活动要在浏览器上登录,而你登录过一次之后你的QQ还记录存在,这就是Cookie。
Session所储存的数据是在服务器上的,就好比是储存你QQ账户的方法。玩网游时需要注册账号,而这个账号不被封杀掉(应该不至于删除掉)就会永久存在,储存你这个账号的方法就是Session。
这两个方法虽然都是保存数据,可是在实际使用中往往用到最多的还是Session,因为Session的安全系数要比Cookie高;其次Cookie储存量是有限的,Session可以无限储存多个变量。
了解之后将正式进入登录流程的讲解。
登录,主要分为两块:处理验证码和登录验证(代码来源于老师)。
一、处理验证码
首先看验证码,因为在登录是需要获取到这四个值再进行判断。验证码的处理很简单,主要判断所输入的值与所给出的验证码是否相等。但是验证码是一张图片,而且可以随机切换,所以要先处理验证码的切换。
验证码切换使用的是已经封装好的方法,直接进行调用即可,而封装方法是可以在网上找到的。

封装好的方法内含有两个方法,一个是获得一串随机的数字字母混合字符串,一个是将这个字符串绘制成一张图片。通过这个公共静态类点出所需要的方法然后将创建的随机验证码用一个变量接收,然后将这个变量存放到Session会话中;将制作的随机验证码用绘制图片的方法以一个数组形式的存放在一个变量中,最后将这个变量以图片格式路径返回到页面验证码图片的src中。

不过这样只会在每次刷新的时候才会改变,要实现点击切换就要加一个点击事件点击触发一次该方法拼接一个当前时间就能达到点击局部刷新的效果。
二、登录验证
验证登录就是判断你输入账户的正确性和完整性,是什么身份进入,还有一个是否记住账户。

一开始还是实例化一个用作返回文本的工具类,其次判断结果错误为否的次数比较多,所以还需要将返回状态默认为false。

需要验证账户就要先获取到页面上所传过来的所有登录提交的数据(账号、密码、验证码、记住否、用户的类型ID)。
最开始还是判断所输入的验证码是否正确,先获取到Session存放的验证码。创建一个变量,然后将Session内存放的验证码使用ToString()方法将验证码以字符串形式返回赋值给这个变量,但如果Session内获取不到值的话就会报错,所以要用一个try…catch。

通过Equals()方法将Session内的验证码与页面上所填写的验证码以去空格、忽略大小写后进行对比是否相同,如果不相同则返回一个文本提示验证码错误,相同的话接下来判断的就是账户了,但这里不用if判断,直接以一个try…catch方法判断,try内通过条件查询出是否存在该账户,如果账户不存在就直接返回一个文本提示账户不存在。

账户存在就要判断输入的密码是否正确了。判断密码是否输入正确,就将输入的密码与数据库中保存的该账户的密码进行对比。

在数据库中保存的的密码这些重要数据都是通过AES加密的,不能直接看到密码,但是在页面输入的密码却是没加密的便不能对比,所以还需要将页面上的密码经过同样的方法(Encryot)进行加密,然后判断两个密码是否相等,不相等则返回一个文本提示密码输入错误,相等则查询出登录该账号的角色是什么。

获取到页面所选择的角色的ID,然后以此为条件连表查询出该角色是什么。判断一下所查询出的是否有一条数据,没有则返回文本提示用户类型错误,有则处理登录信息。

身份什么的已经验证完成,接下来将进行最后的处理。获取到用户类型名称和ID,然后将所需的用户ID、用户类型ID、当前登录的时间还有用户类型保存到Session内。
在第一次登录前是没有任何记录的,而在之后登录的时候每次都要频繁登录很麻烦,所有这里我们就会设置一个Cookie机制,如果这里用Session机制,每一次使用后必须清除掉不然数据会一直存在很麻烦,而Cookie是可以设置保存时限自动清除的。

判断记住否是否勾选,勾选后实例化Cookie,设置保存期限,将用户名、密码、用户类型都保存到实例化对象内,最后将这个实例化的对象添加到Cookies内;不勾选按同样的方法,只不过将保存期限设置为负数,从而达到清除Cookie机制的效果。最后返回一个状态为true,文本提示登录成功。

但是这样还不行,还需要在页面一加载的时候就判断cookie内不为空,里面的用户名、密码、用户类型都为空,并同时将cookie内的这些数据解码,然后以ViewBag的方法将数据返回,在页面已加载,数据回填到指定位置。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值