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

  • 相关阅读:
    nginx reload 与 restart 的区别
    求解一个数n的阶乘(递归求解 与 循环求解)
    类的加载机制
    JVM基础知识
    File类中常用的方法以及搜索路径下的包含指定词的文件
    给定10万数据,数据范围[0~1000),统计出现次数最多的10个数据,并打印出现次数
    TreeMap以及自定义排序的Comparable和Comparator的实现
    HashTable与LinkedHashMap
    HashMap
    Map接口
  • 原文地址:https://www.cnblogs.com/liang24/p/13919397.html
Copyright © 2011-2022 走看看