ASP.NET Core Authentication系列(三)Cookie选项
前言
在本系列第一篇文章介绍了ASP.NET时代如何认证,并且介绍了如何通过web.config文件来配置Auth Cookie的选项。
第二篇文章介绍了如何使用Cookie认证,本文介绍几个常见的Cookie选项及其用法。
CookieBuilder
Cookie选项设置主要在AddCookie的CookieAuthenticationOptions.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);
    });
效果图:

ASP.NET Core Authentication系列(三)Cookie选项的更多相关文章
- ASP.NET Core Authentication系列(四)基于Cookie实现多应用间单点登录(SSO)
		前言 本系列前三篇文章分别从ASP.NET Core认证的三个重要概念,到如何实现最简单的登录.注销和认证,再到如何配置Cookie 选项,来介绍如何使用ASP.NET Core认证.感兴趣的可以了解 ... 
- ASP.NET Core Authentication系列(二)实现认证、登录和注销
		前言 在上一篇文章介绍ASP.NET Core Authentication的三个重要概念,分别是Claim, ClaimsIdentity, ClaimsPrincipal,以及claims-bas ... 
- ASP.NET Core Authentication系列(一)理解Claim, ClaimsIdentity, ClaimsPrincipal
		前言 首先我们来看一下在ASP.NET时代,Authentication是如何使用的.下面介绍的是System.Web.Security.FormsAuthentication: // 登录 Syst ... 
- 《ASP.NET Core 高性能系列》致敬伟大的.NET斗士甲骨文!
		写在开始 三年前,曾写过一篇文章:从.NET和Java之争谈IT这个行业,当时遭到某些自认为懂得java就了不起的Javaer抨击, 现在可以致敬伟大的.NET斗士甲骨文了 (JDK8以上都需要收费, ... 
- 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇
		==== 目录 ==== 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— ... 
- 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之三 —— 配置
		==== 目录 ==== 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— ... 
- 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— 准备
		==== 目录 ==== 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— ... 
- [铁人赛] ASP.NET Core 2 系列- 从头开始
		来势汹汹的.NET Core似乎要取代.NET Framework,ASP.NET也随之发布.NET Core版本.虽说名称沿用ASP.NET,但相较于ASP.NET确有许多架构上的差异,可说是除了名 ... 
- 在ASP.NET Core中添加的Cookie如果含有特殊字符,会被自动转义
		我们知道在Cookie中有些字符是特殊字符,这些字符是不能出现在Cookie的键值中的. 比如"="是Cookie中用来分隔键和值的特殊字符,例如:Key01=Value01,表示 ... 
随机推荐
- HTTP 的前世今生,那些不为人知的秘密
			每个时代,都不会亏待会学习的人. 大家好,我是 yes. HTTP 协议在当今的互联网可谓是随处可见,一直默默的在背后支持着网络世界的运行,对于我们程序员来说 HTTP 更是熟悉不过. 平日里我们都说 ... 
- 面试官:开发过Maven插件吗?我:开发过啊。。。
			写在前面 转眼间,今天已经是假期的第4天了.今天要给大家分享点啥呢?想了半天,想起了之前去某宝面试的情景.记得面试前自己基于Maven开发过一些简单实用的插件,而且在自己的本地环境中一直在使用,极大的 ... 
- LRC 滚动器 + Vue.js
			LRC 滚动展示VueJS cnblogs @ Orcim 最 近一直在学习尤大大的这个前端框架.Vue 无疑是一款极易上手的前端框架,因为官方的文档就是中文的,十分"本土化", ... 
- MYSQL 50 基础题 (转载)
			MYSQL 50 基础题 (转载) 前言:最近在强化MYSQL 能力 答案在(也是转载处) https://www.cnblogs.com/kangxinxin/p/11585935.html 下面是 ... 
- 加快ASP。NET Core WEB API应用程序。第3部分
			下载source from GitHub 对ASP进行深度重构和优化.NET Core WEB API应用程序代码 介绍 第1部分.创建一个测试的RESTful WEB API应用程序. 第2部分.增 ... 
- 网站搭建-云服务器是什么-云服务器ECS是什么
			学习上瘾了,本博客关闭,后期再总结整理. 
- S3C6410中断系统
			S3C6410的中断主要改进是. 增加中断向量控制器,这样在S3C2440里需要用软件来跳转的中断处理机制,在S3C6410完全由硬件来跳转.你只要把ISR地址是存在连续向量寄存器空间,而不是象S3C ... 
- MeteoInfoLab脚本示例:inpolygon
			inpollygon函数是用来判断带坐标(x/y)的数据是否在某个或者一组多边形(Polygon)中,返回的结果中如果做多边形内则值为1,否则值为-1.下面一个例子演示了利用一个shape文件和inp ... 
- Git 高级用法,你会了吗?
			请注意我有意跳过了 git commit.git pull/push 之类的基本命令,这份小抄的主题是 git 的一些「高级」用法. 导航 -- 跳到之前的分支 git checkout - 查看历史 ... 
- 1.1 Python 概述
			1.1 Python 概述 1.1.1 了解Python Python 是由荷兰人 Guido Van Rossum 发明的一种面向对象的解释型高级编程语言.Python的设计哲学为 优雅.明确和简单 ... 
