HTML5技术

ASP.NET Core 使用Cookie验证身份 - Sweet-Tang(2)

字号+ 作者:H5之家 来源:H5之家 2017-08-24 17:00 我要评论( )

然后,将在Startup.cs的ConfigureServices方法中将Cookie服务注册进行配置: services.AddAuthentication(MyCookieAuthenticationScheme).AddCookie(options ={options.Events = new CookieAuthenticationEvents{On

然后,将在Startup.cs的ConfigureServices方法中将Cookie服务注册进行配置:

services.AddAuthentication("MyCookieAuthenticationScheme") .AddCookie(options => { options.Events = new CookieAuthenticationEvents { OnValidatePrincipal = LastChangedValidator.ValidateAsync }; });

如果要非破坏性地更新用户主体,可以调用context.ReplacePrincipal(),并将context.ShouldRenew属性设置为true。

Cookie设置选项

CookieAuthenticationOptions类提供了各种配置选项,在创建时调整Cookie的配置。

ASP.NET Core 1.x

在Startup.cs文件中的Configure方法中使用CookieAuthenticationOptions的例子如下:

app.UseCookieAuthentication(new CookieAuthenticationOptions { CookieName = "AuthCookie", CookieDomain = "contoso.com", CookiePath = "/", CookieHttpOnly = true, CookieSecure = CookieSecurePolicy.Always }); ASP.NET Core 2.x

ASP.NET Core 2.x 统一了用于配置Cookie的API。1.x API已被标记为过时,并且在CookieAuthenticationOptions类中引入了一种类型为CookieBuilder新的Cookie属性。建议您迁移到2.x API。

在Startup.cs的ConfigureServices方法中使用CookieAuthenticationOptions的例子如下:

services.AddAuthentication() .AddCookie(options => { options.Cookie.Name = "AuthCookie"; options.Cookie.Domain = "contoso.com"; options.Cookie.Path = "/"; options.Cookie.HttpOnly = true; options.Cookie.SameSite = SameSiteMode.Lax; options.Cookie.SecurePolicy = CookieSecurePolicy.Always; }); 持久Cookie和绝对到期时间

您可能希望Cookie在浏览器会话中持续存在,并希望设置身份和Cookie传输的绝对过期时间。这种持久性应该只能是用户显示同意,在登录时的“记住我”复选框或类似的机制启用。您可以通过在时调用的SignInAsync方法中使用AuthenticationProperties参数来执行这些操作。例如:

ASP.NET Core 1.x await HttpContext.Authentication.SignInAsync( "MyCookieAuthenticationScheme", principal, new AuthenticationProperties { IsPersistent = true });

上述代码片段中使用的AuthenticationProperties类,位于Microsoft.AspNetCore.Http.Authentication命名空间中。

ASP.NET Core 2.x await HttpContext.SignInAsync( "MyCookieAuthenticationScheme", principal, new AuthenticationProperties { IsPersistent = true });

上述代码片段中使用的AuthenticationProperties类,位于Microsoft.AspNetCore.Authentication命名空间中。

上面的代码段创建一个身份和相应的Cookie,直到浏览器关闭。以前通过配置的任何滑动过期设置仍然有效。如果Cookie在浏览器关闭时过期,浏览器会在重新启动后清除它。如果Cookie在浏览器关闭时过期,浏览器会在重新启动后清除它。

ASP.NET Core 1.x await HttpContext.Authentication.SignInAsync( "MyCookieAuthenticationScheme", principal, new AuthenticationProperties { ExpiresUtc = DateTime.UtcNow.AddMinutes(20) }); ASP.NET Core 2.x await HttpContext.SignInAsync( "MyCookieAuthenticationScheme", principal, new AuthenticationProperties { ExpiresUtc = DateTime.UtcNow.AddMinutes(20) });

上述代码段创建一个持续20分钟的身份和相应的cookie。这将忽略以前通过配置的任何滑动过期设置。

ExpiresUtc和IsPersistent属性是互斥的。

原文:《Using Cookie Authentication without ASP.NET Core Identity》https://docs.microsoft.com/en-us/aspnet/core/security/authentication/cookie?tabs=aspnetcore2x
翻译:Sweet Tang
本文地址:< >
欢迎转载,请在明显位置给出出处及链接。

posted on

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • HTML5新特性: 自定义属性前缀data-以及dataset的使用 - ghostwu

    HTML5新特性: 自定义属性前缀data-以及dataset的使用 - ghostwu

    2017-08-25 10:01

  • Redis和消息队列使用实战 - 静儿1986

    Redis和消息队列使用实战 - 静儿1986

    2017-08-22 12:00

  • 升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署 - 王杰光

    升级项目到.NET Core 2.0,在Linux上安装Docker,并成功部署 - 王杰

    2017-08-18 10:01

  • .Net大局观(2).NET Core 2.0 特性介绍和使用指南 - L.P.Y

    .Net大局观(2).NET Core 2.0 特性介绍和使用指南 - L.P.Y

    2017-08-17 17:01

网友点评
a