页面登录
开发工具与关键技术:MVC
作者:盘洪源
撰写时间:2019年4月17日星期三
登录这种东西一般的项目应该都需要,比如说大家所用到的软件大多数都是需要注册和登录的,这是记录用户信息的一个东西。
登录这个不难,就是一个账号和密码的验证,有时多个验证码或者用户类型的验证这些。只要理解下思路很容易完成的。首先构建一个登录页面的视图,可以采用一个from表单的样式,这个页面的构造就自己寻思着写就行。
在控制器写个验证登录的方法,先定义个记录状态的变量,这样如果出错了用户可以知道他是错在哪。
string strMsg = “fail”;
获取页面的数据:账号、密码这些
string strUserNuber = pwUser.UserNuber;
如果有验证码验证的那就要另外写个生成验证码的方法,验证码都是随机生产的
string strRandom = ValidCodeUtils.GetRandomCode(5);
这是生成一个长度为5的验证码字符串,然后还需要将生成的验证码字符串生成验证码图片才可以
byte[] byteImg = ValidCodeUtils.CreateImage(strRandom);
将验证码字符串存入session中 key值为
Session[“validCode”] = strRandom;
最后就是将验证码图片返回到视图,因为这个是图片所以要已文件的形式返回
return File(byteImg, @“image/jpeg”);
这个时候在验证登录的方法中,首先要获取到上面这个随机生成的验证码字符串,因为用户输入的是字符串不是图片,然后再判断用户输入的验证码是否是与这个随机生成的验证码是否一致(一般都是可以忽略大小写),再进行其他判断。
这个时候就可以判断账号是否存在,这个就是一个简单的单表查询,然后就是这个账号所对应的密码的判断,这个密码的判断可能有所不同,这个要对用户输入的密码进行一个加密,这个也是为了用户信息的安全性。
string password = AESEncryptHelper.Encrypt(strPassword);
这个时候就可以判断了
如果有登录用户类型这一说法的话,这个时候也可以做一个对应的判断,判断登录的账号所对应是一个什么用户类型就是什么用户类型,这个就是个联表的加个条件的查询。就好比如说用户输入的是一个普通登录员,但他的用户类型就选中了管理者,像这种情况就需要提醒用户,类型选错了。判断完后,就可以在页面异步提交数据。
有些登录页面会有回填数据这一种,比如说登录页面中会有个“记住我”这个按钮,就是说你这次登录后下次再登录就不需要填写账号、密码这些,不过这个也有时间限制的,可能一周之内再次登录会有这个效果,这个时间可以自己设置。这个就需要用到一个cookie机制来记住用户信息。
Cookie.Expires就是这个数据的保存时间,后面的7代表的就是保存7天。
当里面的数字为负值浏览器就会自动删除,这样就是当没有选中记住我的时候所需要写的。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190427210413704.PNG)
然后就可以保存相对应的数据了。
将此代码发送至浏览器,浏览器就会生成cookie
Response.Cookies.Add(cookie);
往Cookie里面添加一个新的cookie。
还需要在登录页面的视图那里将记录用户信息的cookie获取出来
声明几个变量(账号、密码),获取cookie的数据后再给变量赋值。
string UserNuber = “”;
UserNuber = System.Web.HttpContext.Current.Server.UrlDecode(cookie[“UserNuber”]);
UrlDecode(对用户的信息进行解码,因为中文会被浏览器套入链接变成特殊代码,因此需要解码译回中文)
然后就是将数据传递到页面:通过Razor语法获取数据。
ViewBag.UserNuber = UserNuber;
完了之后就在登录页面上这几个变量所对应的位置@出数据就完事了
这样就可以实现一个数据回填的效果,这样一个登录的过程大概是这样的。