学习ASP.NET Core的身份认证(基于Cookie的身份认证3)

  用户通过验证后调用HttpContext.SignInAsync函数将用户的身份信息保存在认证Cookie中,以便后续的请求可以验证用户的身份,该函数原型如下所示,其中properties参数的主要属性已在前篇文章中学习,本文学习scheme和principal的意义及用法。

csharp 复制代码
public static Task SignInAsync(string? scheme, ClaimsPrincipal principal, AuthenticationProperties? properties);

  ASP.NET Core项目启动时通过builder.Services.AddAuthentication可以注册多种认证方式,如Cookie、OAuth、JwtBearer等,在调用SignInAsync时指定需要使用的认证方式名称,也即赋予参数scheme特定的认证方式名称。
  SignInAsync函数的principal参数类型为ClaimsPrincipal ,对应的是微软的Identity框架,常用的是Claim、ClaimsIdentity、ClaimsPrincipal类,根据参考文献1中的介绍,这三者的关系是可以理解为ClaimsPrincipal代表当前登录用户,ClaimsIdentity为针对特定认证方式的认证信息实例,而Claim为认证信息明细。一般每个用户登录时创建一个ClaimsPrincipal对象,同步根据当前认证方式创建一个类型为ClaimsIdentity的认证信息集合对象,其内包含若干Claim信息实例。
  Claim类定义如下,从网上及微软帮助文档来看,主要还是直接调用构造函数指定type、value来创建实例对象,type参数类型为string,可以人工指定,也可以使用ClaimTypes静态类的预定义字符串。Claim代表认证信息明细,其可以保存用户名,也可以保存用户角色,用户有多个角色的话就创建多个Claim示例,后续在控制器类中可以根据用户角色进行访问控制。

  创建ClaimsIdentity对象实例需要指定其对应的认证方式,然后就是调用AddClaim/AddClaims函数添加认证信息明细(Claim对象)。用户登录后在其它控制器中获取的HttpContext.User.Identity信息就是登录认证时产生的。

参考文献:

1https://www.cnblogs.com/fanfan-90/p/11918537.html

2https://blog.csdn.net/u010476739/article/details/104447807

3https://www.cnblogs.com/baiqian/p/11187812.html

4https://www.jianshu.com/p/7939a31b0941

5https://www.cnblogs.com/PenZ/p/10318501.html

6https://www.cnblogs.com/jesse2013/p/aspnet-identity-claims-based-authentication-and-owin.html

7https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-9.0\&tabs=visual-studio

相关推荐
李纲明12 小时前
WordPress 登录后跳回登录页或提示「Cookie 被阻止」:先核站点 URL 与 HTTPS 一致,再查安全插件与 CDN
https·登录·cdn·wordpress·cookie·devdiy·站点url
Thanks_ks13 小时前
Cookie 和 Session 到底是什么关系——登录态是怎么维持的
分布式·http·jwt·cookie·session·后端开发·登录态
李纲明2 天前
WordPress 登录后跳回登录页或一直转圈:先核 Cookie、站点 URL 与 HTTPS,再查 CDN 与安全插件
登录·cdn·wordpress·cookie·devdiy·安全插件
流浪0013 天前
计算机网络篇13:应用层——HTTP 不记录用户状态,Cookie 在客户端存凭证、Session 在服务端存数据
计算机网络·cookie·session·http协议
FungLeo4 天前
成为全栈·Go 后端篇·跨语言认证兼容:Node 与 Go 如何互认 JWT 和密码
golang·go·jwt·身份认证·成为全栈·bcrypt
李纲明8 天前
WordPress 后台登录马上被踢回登录页:Cookie 域、HTTPS、盐值和页面缓存怎么查
运维·缓存·https·php·wordpress·cookie
j7~10 天前
【Linux网络加餐】《HTTP 会话保持:Cookie 与 Session 原理及实验验证》---详解
linux·网络·网络协议·http·cookie·session
承渊政道14 天前
Linux网络学习【深入理解应用层HTTP协议、Cookie与Session机制及HTTPS协议原理】
linux·网络·学习·http·cookie·session
FungLeo18 天前
成为全栈·Flutter App 篇·会员中心:资料、密码、通知与私有数据缓存
flutter·dart·身份认证·数据隔离·成为全栈·会员中心
安当加密030119 天前
动态口令认证如何选型
身份认证·mfa·双因素认证·动态口令认证如何选型·动态口令认证