zoukankan      html  css  js  c++  java
  • ASP.NET Core Authentication系列(三)Cookie选项

    前言

    在本系列第一篇文章介绍了ASP.NET时代如何认证,并且介绍了如何通过web.config文件来配置Auth Cookie的选项。

    第二篇文章介绍了如何使用Cookie认证,本文介绍几个常见的Cookie选项及其用法。

    CookieBuilder

    Cookie选项设置主要在AddCookieCookieAuthenticationOptions.Cookie

    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
        .AddCookie(options =>
        {
            options.Cookie.Name = "Name"; // 设置Cookie名称
            options.Cookie.Expiration = new TimeSpan(1, 0, 0); // 有效期1小时
            options.Cookie.Domain = ".91suke.com"; // 设置Cookie域名
        });
    

    下面我们具体看一下CookieAuthenticationOptions.Cookie的结构:

    namespace Microsoft.AspNetCore.Http
    {
        public class CookieBuilder
        {
            public CookieBuilder();
    
            public virtual string Domain { get; set; }
            
            public virtual TimeSpan? Expiration { get; set; }
            
            public virtual bool HttpOnly { get; set; }
            
            public virtual bool IsEssential { get; set; }
            
            public virtual TimeSpan? MaxAge { get; set; }
            
            public virtual string Name { get; set; }
            
            public virtual string Path { get; set; }
            
            public virtual SameSiteMode SameSite { get; set; }
            
            public virtual CookieSecurePolicy SecurePolicy { get; set; }
    
            public CookieOptions Build(HttpContext context);
            
            public virtual CookieOptions Build(HttpContext context, DateTimeOffset expiresFrom);
        }
    }
    

    常用的几个选项:

    • Domain:Cookie域名,只有相同域名(或子域名)才会携带Cookie
    • Expiration:Cookie有效期
    • Name:Cookie名称
    • Path:Cookie路径,只有访问路径下的子路径才会携带Cookie
    • HttpOnly:此属性为true,则只有在http请求头中会带有此cookie的信息,而不能通过document.cookie来访问此cookie。

    通过Configuration来设置Cookie选项

    在实际开发中,一般不会对选项或配置项硬编码,因为开发环境与生产环境会有差异。这时候一般会通过配置文件来管理配置项,这样不需要重新编译。

    appsettings.json里添加配置项:

    {
      // other configuration
      
      "Cookie":{
        "Name" : "TestCookie",
        "Path": "/"
      }
      
      // other configuration
    }
    

    然后在Startup里设置:

    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
        .AddCookie(options =>
        {
            Configuration.GetSection("Cookie").Bind(options.Cookie);
        });
    

    效果图:

    image

  • 相关阅读:
    Windows7下安装搭建Ngnix教程和配置详解
    CentOS6.6图文详细安装教程(有些设置大部分教程没出现过,附带网络设置等)
    每日一句(2014-8-29)
    每日一句(2014-8-28)
    每日一句(2014-8-27)
    javascript验证键盘keycode
    每日一句(2014-8-26)
    每日一句(2014-8-25)
    javascript 学习记录
    每日一句(2014-8-22)
  • 原文地址:https://www.cnblogs.com/liang24/p/13919397.html
Copyright © 2011-2022 走看看