第一次写博客,使用MVC做一个简易版的用户登录,注销
1.先完成登录的静态页面,如下
2.点击登录,后台处理方法,校验成功之后,设置session的过期时间和[username]
if (name == "admin" && pwd == "123.com")
{
Session["username"] = name.ToString();
Session.Timeout = 2;
// HttpCookie cook = new HttpCookie("cookusername", name.ToString());
// Response.Cookies.Add(cook);
return true;
}
return false;
3.验证成功之后,我们就完成了用户登录
4.用户注销后台代码:
public bool Del()
{
try
{
//删除全部session
// Session.Abandon();
//删除一个session
Session["UserName"] = null;
Session.Remove("UserName");
return true;
}
catch (Exception)
{
return false;
}
}
5.验证是否登录,如果没有登录跳转到登录页面
public ActionResult About()
{
HttpContextBase context = this.HttpContext;
if (Session["username"]== null)
{
return RedirectToAction("index");
}
string session = context.Session.SessionID;
ViewBag.Message ="sessionId:"+ session;
return View();
}
6.就此完成用户的登录注销,项目代码地址:
7.总结:
cookie与session进行验证过程:session[username]=admin 微软会自动的生成一个sessionID 也就是
微软生成这个数据后 会自动得在浏览器端保存一个id='ujqcl1sxips5bdpjtbe0eeij
'的值 ,key=“username”,value=“admin”的cookie,每当客户端发送请求时, 浏览器 携带id(ujqcl1sxips5bdpjtbe0eeij)和key(username)和value(admin) 去服务器端做校验,
如果存在id=‘ujqcl1sxips5bdpjtbe0eeij’ key=“username”,value=“admin”信息,并且过期时间还没有到,则用户存在;如果已到过期时间,或者客户端,服务器端信息不匹配 则都需要重新登录
这种方式只适合单一服务器,对于多台服务器,用户session做不到共享,就会出现需要多次登录的情况,这是需要共享session或者jwt