ASP.NET Core 2.0中CookieAuthentication如何使用

ASP.NET Core 2.0中CookieAuthentication如何使用

这篇文章将为大家详细讲解有关ASP.NET Core 2.0中CookieAuthentication如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

在ASP.NET Core 2.0中使用CookieAuthentication跟在1.0中有些不同,需要在ConfigureServices和Configure中分别设置,前者我们叫注册服务,后者我们叫注册中间件

public void ConfigureServices(IServiceCollection services){

   services.AddCookieAuthentication();
   services.AddMvc(options =>
   {
       var policy = new AuthorizationPolicyBuilder()
           .RequireAuthenticatedUser()
           .Build();
     // 因为是后台系统,必须登陆以后才能操作
       options.Filters.Add(new AuthorizeFilter(policy));
   });
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
   if (env.IsDevelopment())
   {
       app.UseDeveloperExceptionPage();
   }
   else
   {
       app.UseExceptionHandler("/Home/Error");
   }
   app.UseStaticFiles();

  // 使用Authentication中间件
   app.UseAuthentication();
   app.UseMvc(routes =>
   {
       routes.MapRoute(
           name: "default",
           template: "{controller=Home}/{action=Index}/{id?}");
   });
}

在上面的services.AddCookieAuthentication中没有任何参数,系统会为某些属性指定默认值

public static class CookieAuthenticationDefaults
{
   /// <summary>
   /// The default value used for CookieAuthenticationOptions.AuthenticationScheme
   /// </summary>
   public const string AuthenticationScheme = "Cookies";

   /// <summary>
   /// The prefix used to provide a default CookieAuthenticationOptions.CookieName
   /// </summary>
   public static readonly string CookiePrefix = ".AspNetCore.";

   /// <summary>
   /// The default value used by CookieAuthenticationMiddleware for the
   /// CookieAuthenticationOptions.LoginPath
   /// </summary>
   public static readonly PathString LoginPath = new PathString("/Account/Login");

   /// <summary>
   /// The default value used by CookieAuthenticationMiddleware for the
   /// CookieAuthenticationOptions.LogoutPath
   /// </summary>
   public static readonly PathString LogoutPath = new PathString("/Account/Logout");

   /// <summary>
   /// The default value used by CookieAuthenticationMiddleware for the
   /// CookieAuthenticationOptions.AccessDeniedPath
   /// </summary>
   public static readonly PathString AccessDeniedPath = new PathString("/Account/AccessDenied");

   /// <summary>
   /// The default value of the CookieAuthenticationOptions.ReturnUrlParameter
   /// </summary>
   public static readonly string ReturnUrlParameter = "ReturnUrl";
}

根据微软的命名规范在ConfigureServices统一使用Add***,在Configure统一使用Use***

登陆代码

public async Task<IActionResult> LoginDo()
{
  var user = new ClaimsPrincipal(new ClaimsIdentity(new[] { new Claim(ClaimTypes.Name, "bob") }, CookieAuthenticationDefaults.AuthenticationScheme));
  await HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, user, new AuthenticationProperties
  {
    IsPersistent = true,
    ExpiresUtc = DateTimeOffset.Now.Add(TimeSpan.FromDays(180))
  });
  return Redirect("/");
}

登出代码

public async Task<IActionResult> Logout()
{
   await HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
   return Redirect("/");
}

关于ASP.NET Core 2.0中CookieAuthentication如何使用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。