从零开始学ASP.NET Core Identity框架( 六 )

21.5.3 AccountController中的Login()操作方法using Microsoft.AspNetCore.Identity;using Microsoft.AspNetCore.Mvc;using MockSchoolManagement.ViewModels;using System.Threading.Tasks;namespace MockSchoolManagement.Controllers{public class AccountController:Controller{private UserManager<IdentityUser> _userManager;private SignInManager<IdentityUser> _signInManager;public AccountController(UserManager<IdentityUser> userManager,SignInManager<IdentityUser> signInManager){this._userManager = userManager;this._signInManager = signInManager;}[HttpGet]public IActionResult Login(){return View();}[HttpPost]public async Task<IActionResult> Login(LoginViewModel model){if(ModelState.IsValid){var result = await _signInManager.PasswordSignInAsync(model.Email,model.Password,model.RememberMe,false);if(result.Succeeded){return RedirectToAction("index","home");}ModelState.AddModelError(string.Empty,"登录失败,请重试");}return View(model);}}}21.5.4 会话Cookie与持久性Cookie维基百科解释:Cookie并不是它的原意“甜饼”的意思,而是一个保存在客户机中的简单的文本文件,这个文件与特定的Web文档关联在一起,保存了该客户机访问这个Web文档时的信息,当客户机再次访问这个Web文档时这些信息可供该文档使用 。由于“Cookie”具有可以保存在客户机上的神奇特性,因此它可以帮助我们实现记录用户个人信息的功能,而这一切都不必使用复杂的CGI等程序 。
简单来说,我们把Cookie理解为一个大小不超过4kB,便于我们在客户端保存一些用户个人信息的功能 。
在ASP.NET Core Identity中,用户成功登录后,将发出Cookie,并将此Cookie随每个请求一起发送到服务器,服务器会解析此Cookie信息来了解用户是否已经通过身份验证和登录 。此Cookie可以是会话Cookie或持久Cookie 。
会话Cookie是指用户登录成功后,Cookie会被创建并存储在浏览器会话实例中 。会话Cookie不包含过期时间,它会在浏览器窗口关闭时被永久删除 。
持久Cookie是指用户登录成功后,Cookie会被创建并存储在浏览器中,因为是持久Cookie,所以在关闭浏览器窗口后,它不会被删除 。但是,它通常有一个到期时间,会在到期后被删除 。
在LoginViewModel.cs视图模型中,我们已经添加了一个bool类型的RememberMe属性 。用户可在登录时选择记住我,选中即使用持久性Cookie,而未选中则为会话Cookie 。
现在运行项目,我们可以在登录的时候选择记住我,登录成功后如图21.9所示 。

从零开始学ASP.NET Core Identity框架

文章插图
 
图21.9
打开开发者工具(按F12键),观察图21.9框中的内容,可以发现过期时间是很长的 。现在关闭浏览器,并将其再次打开,用户也依然是登录状态 。这便是持久性Cookie的作用,只有在到期时间到了之后才会删除 。
至于会话Cookie验证,我们在登录的时候取消选择记住我,然后看到如图21.10所示的内容 。
从零开始学ASP.NET Core Identity框架

文章插图
 
图21.10
这里已经是一个会话了,它不包含过期时间,在关闭浏览器后,再次将其打开,系统会自动注销用户 。
以上就是持久性Cookie与会话Cookie的区别了 。
在本章中我们学习了Identity的基本功能,创建一个系统用户并完成了登录注册及状态检查 。在后面的章节中,内容会逐步深入,可配合源代码学习 。
21.6 小结本章介绍了ASP.NET Core Identity框架的定位及作用,并利用它提供的API完成了用户的登录与注销等基本功能 。在后面的章节中我们会使用更多的API将系统趋于完善 。
本文摘自《深入浅出 ASP.NET Core》

【从零开始学ASP.NET Core Identity框架】


推荐阅读