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

  • 相关阅读:
    架构师时间~白话OAuth2
    vue前端各种问题
    windows命令行导入sql
    正则表达式概述
    XPath语法 在C#中使用XPath示例
    面试宝典
    Repository,UnitOfWork,DbContext(1)
    EF Code First:实体映射,数据迁移,重构(1)
    表单常用的正则表达式
    Lambda表达式
  • 原文地址:https://www.cnblogs.com/liang24/p/13919397.html
Copyright © 2011-2022 走看看