登录页面的本质是通过控制器方法将页面输入的账户和密码(加密后的)与数据库内的账户和密码(已加密的)进行比对,无误后才能登录,在有些账户登录时还需要验证码与用户身份,验证码是一种随机字符编码用来防止自动登录,而用户身份往往是代表着一些权限
登录往往是需验证的,而验证登录的顺序可以是:用户名->密码->用户身份>验证码-,建议使用post提交方式;
控制器代码:
string jobNumber = "";
string password = "";
bool isRember = false;
//读取浏览器请求传递的cookie
HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["user"];
if (cookie != null)//判断cookie是否存在{
if (cookie["jobNumber"] != null)
{
//对字符串进行 URL 解码并返回已解码的字符串
jobNumber = System.Web.HttpContext.Current.Server.UrlDecode(cookie["jobNumber"]);
}
if (cookie["Password"] != null)
{
password = System.Web.HttpContext.Current.Server.UrlDecode(cookie["password"]);
}
isRember = true;
}
视图js代码:
$(document).ready(function () {
//匿名
$("#btnSubmit").click(function () {
//window.location.href = "/Main/Main";
var jobNumber = $("#JobNumber").val();//获取工号
var userPassword = $("#userPassword").val();//获取用户输入密码
var validCode = $("#fmLogin input[name='validCode']").val();//获取验证码
var rememberMe = $("#fmLogin input[name='rememberMe']").is(":checked");//是否记住
//console.log(jobNumber);
//通过if语句判断用户是否输入完整
//&& validCode != null && validCode != ""
if (jobNumber != null && jobNumber != ""
&& userPassword != null && userPassword != ""
) {
//异步提交
$.post("@Url.Content("~/Main/UserLogin")",
{
jobNumber: jobNumber,
password: userPassword,
validCode: validCode,
rememberMe: rememberMe
}, function (msg) {
if (msg.State == true) {
window.location.replace("/Main/Main");
} else {
alert(msg.Text);
}
});
} else {
alert("请将数据填写完整");
}
});
//快捷键登录
$("body").keyup(function (e) {
if (e.keyCode == 13) {
//console.log(123);
$("#btnSubmit").click();
}
});
});
我们先从视图获取数据进行用户名的认证根据页面输入的用户名到数据库查询,正确则返回唯一值,否则返回错误值,用户名的认证无误之后,
接下来是密码的验证, 数据库中保存的密码是加密之后的密码,因此比较之前需要将输入的密码先进行加密再来进行对比
验证码的验证是将保存在session中的验证码转换为字符串保存到变量中,再将生成的验证码和输入的验证码进行不区分大小写的比较 。