十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
入门实战-用户登录,记录Cookie,使用Session
创新互联建站于2013年创立,先为芦山等服务建站,芦山等地企业,进行企业商务咨询服务。为芦山企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
用户登录功能是做项目开发的必备功能,各个业务点中都要读取和使用用户信息,所以用户登录,并记录用户信息可以使用Cookie,Session等功能。
(1).先在Home视图内建立一个Login.cshtml的登录文件,代码如下
(2).然后是Action的编写;还是2个action,一个HttpGet,一个HttpPost;
(3).在HttpPost类型的Action Login内,要进行密码的验证和缓存数据;我贴出代码,注意看关键行注释说明;
[HttpPost] public IActionResult Login(string userName,string passWord) { string uName = userName; string uPass = passWord;//此处可以对密码进行加密处理 //以用户名,密码为条件,从数据库获取用户对象; //if(User!=null){则将用户对象使用Cookie/Session缓存} //代码假定用户名=admin 密码= if (uName=="admin" && uPass=="") { //1.最简单的Cookie用法(不安全的): CookieOptions options= new CookieOptions(); options.Expires= DateTime.Now.AddMinutes(10);//10分钟后过期 Response.Cookies.Append("cookie_UserName", uName, options);//设置用 Response.Cookies.Append("cookie_UserPass", uPass, options);//设置密码 string _userName = Request.Cookies["cookie_UserName"];//读取cookie用户名 string _userPass = Request.Cookies["cookie_UserPass"];//读取cookie密码 ViewData["_userName"] = _userName; ViewData["_UserPass"] = _userPass; //2.使用基于Claim的 Cookie加密认证 //使用前,可以在Startup.cs中配置Cookie信息 var claims = new[] { new Claim(ClaimTypes.Name,uName), new Claim("UserPass",uPass) //还可以添加登录时间,ip等信息 }; var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); ClaimsPrincipal user= new ClaimsPrincipal(claimsIdentity); HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, user, new AuthenticationProperties() { IsPersistent = true, ExpiresUtc = DateTimeOffset.Now.AddMinutes(20) } ); return RedirectToAction("Index", "Home");//不同Controller的跳转写法 //return Redirect("Privacy");//同一个Controller下的写法 } else { return RedirectToAction("Error", "Home"); } }