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

采用基于Cookie的身份认证,在调用services.AddAuthentication注册服务时,可以通过CookieAuthenticationOptions对象按需设置Cookie属性,常用的包括以下属性(更详细的介绍见参考文献2,微软的帮助文档中的介绍看的头大):

序号 属性 说明
1 Cookie 保存Cookie设置,主要属性包括Name(Cookie名称)、Path(Cookie 路径)、 Expiration(Cookie 的生命周期,也即过期时间)、MaxAge(Cookie 的最大期限,Cookie使用Expiration或MaxAge都可以用来限制Cookie的生效时间,如果同时使用,则以MaxAge为准)、HttpOnly(客户端脚本是否无法访问 Cookie,默认为false)、IsEssential(指示此 Cookie 是否对应用程序正常运行至关重要。 如果为 true,则可能会绕过同意策略检查。)
2 LoginPath 设置登录页路径,当访问未授权路径时默认跳转到LoginPath路径
3 LogoutPath 设置登出路径
4 AccessDeniedPath 访问被拒绝时的默认跳转路径
5 ExpireTimeSpan 为存储在 Cookie 中的身份验证票证的有效时间段,其与CookieOptions的 Expires属性(过期时间)是分开的,后者指定浏览器将保留 Cookie 的时间
6 SlidingExpiration 是否顺延过期时间,值为true时,服务端处理请求时如果ExpireTimeSpan已超过一半,则重新签发新的Cookie及过期时间,更详细的说明见参考文献3

在服务端登录函数中通过用户验证后,调用HttpContext.SignInAsync函数将将用户的身份信息保存在认证Cookie中,以便后续的请求可以验证用户的身份(参考文献4)。该函数可以传入AuthenticationProperties对象设置与身份验证会话相关的属性,常用属性如下(更详细的介绍见参考文献5):

序号 属性 说明
1 IssuedUtc 获取或设置身份验证票证的颁发时间
2 ExpiresUtc 获取或设置身份验证票证的过期时间
3 IsPersistent 获取或设置在多次请求后是否还保留身份验证会话
4 AllowRefresh 获取或设置是否应允许刷新身份验证会话

参考文献:

[1]https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.aspnetcore.http.cookiebuilder?view=aspnetcore-9.0

[2]https://biyusr.blog.csdn.net/article/details/125925446

[3]https://q.cnblogs.com/q/1054

[4]https://cloud.tencent.com/developer/information/HttpContext.SignInAsync()登录的目的是什么?

[5]https://learn.microsoft.com/zh-cn/dotnet/api/microsoft.aspnetcore.authentication.authenticationproperties?view=aspnetcore-9.0

相关推荐
棉晗榜7 天前
.net core在linux导出excel,System.Drawing.Common is not supported on this platform
linux·excel·asp.net core·miniexcel
棉晗榜7 天前
asp.net core发布配置端口号,支持linux
asp.net core
coredx9 天前
如何优雅地让 ASP.NET Core 支持异步模型验证
asp.net core
小乖兽技术17 天前
ASP.NET Core Web 项目的部署:选择 IIS 还是 Kestrel?
后端·kestrel·iis·asp.net·asp.net core
界面开发小八哥19 天前
DevExtreme JS & ASP.NET Core v24.2新功能预览 - 全新的聊天组件
javascript·ui·asp.net core·界面控件·ui开发·devextreme·.net 9
枫叶丹420 天前
【在Linux世界中追寻伟大的One Piece】HTTP cookie
linux·运维·服务器·http·cookie
gc_229924 天前
学习ASP.NET Core的身份认证(基于Session的身份认证3)
asp.net core·session·身份认证
gc_229925 天前
ASP.NET Core项目中使用SqlSugar连接多个数据库的方式
asp.net core·sqlsugar·多数据库
gc_22991 个月前
学习ASP.NET Core的身份认证(基于Session的身份认证1)
asp.net core·session·身份认证
GGBondlctrl1 个月前
【Spring MVC】如何获取cookie/session以及响应@RestController的理解,Header的设置
java·spring·mvc·cookie·session·header·restcontroller