ASP.NET Core

asp.net core 3.1 cookie httpOnly 登录验证

谁说我不能喝 提交于 2020-05-04 09:29:48
region set-cookie to ie 1.startup.cs ConfigureServices 添加 //注册Cookie认证服务 services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme) .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, option => { option.AccessDeniedPath = "/Login"; //当用户尝试访问资源但没有通过任何授权策略时,这是请求会重定向的相对路径资源 option.LoginPath = "/Login/"; option.Cookie.Name = "token";//设置存储用户登录信息(用户Token信息)的Cookie名称 option.Cookie.HttpOnly = true;//设置存储用户登录信息(用户Token信息)的Cookie,无法通过客户端浏览器脚本(如JavaScript等)访问到 //option.Cookie.SecurePolicy = Microsoft.AspNetCore.Http.CookieSecurePolicy.Always;//设置存储用户登录信息(用户Token信息)的Cookie

asp.net core 系列 9 三种运行环境和IIS发布

主宰稳场 提交于 2020-05-04 05:58:15
一.在asp.net core中使用多个环境   ASP.NET Core 配置是基于运行时环境, 使用环境变量。ASP.NET Core 在应用启动时读取环境变量ASPNETCORE_ENVIRONMENT,并将该值存储在 IHostingEnvironment.EnvironmentName 中。ASPNETCORE_ENVIRONMENT 可设置为任意值,但框架支持三个值:Development、Staging 和 Production。 如果发布项目未设置 ASPNETCORE_ENVIRONMENT,则默认为 Production (本机vs中项目Properties\launchSettings.json中environmentVariables默认设置的是Development,如果禁用environmentVariables,那默认则为Production)。   下面是Startup. Configure中的默认实现,本机默认配置的是Development环境。 //如果是Development环境 if (env.IsDevelopment()) { //当捕获同步和异步系统。管道中的异常实例,并生成HTML错误响应。 app.UseDeveloperExceptionPage(); } else { //如果不是Development环境

IIS调试ASP.NET Core项目

戏子无情 提交于 2020-05-04 04:42:55
IIS调试ASP.NET Core项目 新建一个ASP.NET Core Web项目,选择API模板或随便一个模板都行 新建一个名为localhost的发布(没试过远程主机,或许也可以),主要设置如下: 连接页 ​ 发布方法:Web部署 ​ 服务器:localhost ​ 站点名称:Default Web Site/{任意合法名称} 设置页 ​ 配置:Debug ​ 目标框架:与项目所用框架一致 (当前选的netcoreapp2.2) ​ 部署模式:框架依赖 ​ 目标运行时:可移植 执行发布,会在IIS中自动创建站点和应用程序池,检查创建的应用程序池是否为:无托管代码 + 集成 浏览该网站,确保能正常打开 在Visual Studio中选择"调试\附加到进程..."菜单,在弹出的对话框中选择相应的进程 可以输入关键字"w3wp"来过滤出IIS进程,ASP.NET Core网站进程在类型列的值为"托管(CoreCLR)",还可以通过用户名列进一步分辨。 如果没有见到相关进程,可以尝试按一按[刷新]按钮。 附加成功后,在相应的方法内部加断点,然后通过浏览器访问该方法,断点将会命中。 还有一种一步到位的调试方法,打开项目属性对话框,选择"调试"页,新建一个配置(例如名为IIS) 启动:IIS 参数:默认没有 √启动浏览器:可指定启动时浏览的URL,不指定则浏览默认页面 环境变量

Visual Studio 调试系列11 远程调试

五迷三道 提交于 2020-05-04 03:02:27
系列目录 【已更新最新开发文章,点击查看详细】 你可以调试已部署在另一台计算机的 Visual Studio 应用程序。 要进行此操作,可使用 Visual Studio 远程调试器。 01 下载和安装远程工具 在远程设备或服务器,你想要调试,而非 Visual Studio 计算机,下载并安装远程工具的正确版本从下表中的链接。 下载最新版本的 Visual Studio 远程工具。 最新的远程工具版本兼容使用早期的 Visual Studio 版本,但早期的远程工具版本不是与更高版本的 Visual Studio 版本兼容。 (例如,如果使用 Visual Studio 2017,下载适用于 Visual Studio 2017 远程工具的最新的更新。 在此方案中,不要下载远程工具的 Visual Studio 2019。) 下载的远程工具使用相同的体系结构在计算机安装它们。 例如,如果你想要调试远程计算机运行 64 位操作系统上的 32 位应用程序,安装 64 位远程工具。 Version 链接 说明 Visual Studio 2019 远程工具 与所有 Visual Studio 2019 版本兼容。 下载匹配您设备的操作系统 (x 86、 x64、 或 ARM64) 的版本。 在 Windows 服务器上,请参阅 取消阻止文件下载 下载远程工具的帮助。 Visual

Ajax跨域请求附带Cookie/Ajax跨域请求附带身份凭证

 ̄綄美尐妖づ 提交于 2020-05-04 02:50:59
一、跨域请求中默认不带cookie等验证凭证 尤其对于post请求。 对于ajax请求,其中post,get都可以正常访问。 withCredentials: false , // 允许携带cookie 如果设置允许带cookie那么会遇到一个错误: Failed to load http: // pre.api.jmxy.mockuai.c...: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'. Origin ' http://pre.promotion.jmxy.moc ...' is therefore not allowed access. The credentials mode of requests initiated by the XMLHttpRequest is controlled by the withCredentials attribute. 这个错误的意思: 也就是说 Access-Control-Allow-Credentials 设置为 true 的情况下 Access-Control-Allow

第二节:SSL证书的申请、配置(IIS通用)及跳转Https请求的两种方式

旧街凉风 提交于 2020-05-03 20:51:13
一. 相关概念介绍 1. SSL证书服务   SSL证书服务由"服务商"联合多家国内外数字证书管理和颁发的权威机构、在xx云平台上直接提供的服务器数字证书。您可以在阿里云、腾讯云等平台上直接购买、或者免费获取所需类型的数字证书,并一键部署在云产品中,以最小的成本将您的服务从HTTP转换成HTTPS,实现网站的身份验证和数据加密传输。 2. 什么是数字证书?   数字证书是一个经权威授权机构数字签名、包含公开密钥拥有者信息以及公开密钥的文件,是权威机构颁发给网站的可信凭证。最简单的证书包含一个公开密钥、证书名称以及证书授权中心的数字签名。   数字证书还有一个重要的特征:只在特定的时间段内有效。 3. 什么是SSL?  SSL协议是一种可实现网络通信加密的安全协议,可在浏览器和网站之间建立加密通道,保障数据在传输的过程中不被篡改或窃取。 4. 什么是SSL证书?   SSL证书采用SSL协议进行通信,是由权威机构颁发给网站的可信凭证。   SSL证书采用SSL协议进行通信。SSL证书部署到Web服务器后,Web服务器访问将启用HTTPS协议。您的网站将会通过 HTTPS 加密协议来传输数据,可帮助Web服务器和网站间建立可信的加密链接,从而保证网络数据传输的安全。 5. 什么是Https?    HTTPS是一种基于SSL协议的网站加密传输协议。   网站安装SSL证书后

C# 9 新特性:代码生成器、编译时反射

依然范特西╮ 提交于 2020-05-03 16:06:31
前言 今天 .NET 官方博客宣布 C# 9 Source Generators 第一个预览版发布,这是一个用户已经喊了快 5 年特性,今天终于发布了。 简介 Source Generators 顾名思义代码生成器,它允许开发者在代码编译过程中获取查看用户代码并且生成新的 C# 代码参与编译过程,并且可以很好的与代码分析器集成提供 Intellisense、调试信息和报错信息,可以用它来做代码生成,因此也相当于是一个加强版本的编译时反射。 使用 Source Generators,可以做到这些事情: 获取一个 Compilation 对象,这个对象表示了所有正在编译的用户代码,你可以从中获取 AST 和语义模型等信息 可以向 Compilation 对象中插入新的代码,让编译器连同已有的用户代码一起编译 Source Generators 作为编译过程中的一个阶段执行: 编译运行 -> [分析源代码 -> 生成新代码] -> 将生成的新代码添加入编译过程 -> 编译继续。 上述流程中,中括号包括的内容即为 Source Generators 所参与的阶段和能做到的事情。 作用 .NET 明明具备运行时反射和动态 IL 织入功能,那这个 Source Generators 有什么用呢? 编译时反射 - 0 运行时开销 拿 ASP.NET Core 举例,启动一个 ASP.NET

ASP.NET Core 运行原理解剖[5]:Authentication

半世苍凉 提交于 2020-05-02 10:17:16
原文: ASP.NET Core 运行原理解剖[5]:Authentication 在现代应用程序中,认证已不再是简单的将用户凭证保存在浏览器中,而要适应多种场景,如App,WebAPI,第三方登录等等。在 ASP.NET 4.x 时代的Windows认证和Forms认证已无法满足现代化的需求,因此在ASP.NET Core 中对认证及授权进行了全新设计,使其更加灵活,可以应付各种场景。在 上一章 中,我们提到HttpContext中认证相关的功能放在了独立的模块中,以扩展的方式来展现,以保证HttpContext的简洁性,本章就来介绍一下 ASP.NET Core 认证系统的整个轮廓,以及它的切入点。 目录 本系列文章从源码分析的角度来探索 ASP.NET Core 的运行原理,分为以下几个章节: ASP.NET Core 运行原理解剖[1]:Hosting ASP.NET Core 运行原理解剖[2]:Hosting补充之配置介绍 ASP.NET Core 运行原理解剖[3]:Middleware-请求管道的构成 ASP.NET Core 运行原理解剖[4]:进入HttpContext的世界 ASP.NET Core 运行原理解剖[5]:Authentication(Current) AuthenticationHttpContextExtensions

asp.net core swagger使用及注意事项

 ̄綄美尐妖づ 提交于 2020-05-02 09:58:29
  Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。是一款RESTFUL接口的 文档在线自动生成+功能测试 软件。 主要目的是构建 标准的、 稳定的、可重用的、 交互式的 API以及简单方便的 功能测试 。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。Swagger 让部署管理和使用功能强大的API从未如此简单。 作用: 1. 根据基于规范的标准设计和建模API 2. 几乎可以用任何语言为您的API构建稳定,可重用的代码  3. 使用交互式API文档改善开发人员体验  4. 对您的API执行简单的功能测试,而无需开销  5. 在您的API架构中设置和实施API样式指南 一 、swagger的创建   1.新建asp.net core项目 2.nuget上安装 Swashbuckle.AspNetCore Swashbuckle有三个主要组件: Swashbuckle.AspNetCore.Swagger :一个Swagger对象模型和中间件,用于将 SwaggerDocument 对象 公开 为JSON端点。 Swashbuckle.AspNetCore.SwaggerGen :一个Swagger生成器,可 SwaggerDocument

Swagger实现Api(基于.NET core 2.2)

和自甴很熟 提交于 2020-05-02 09:56:52
创建.NET core WebApi 1.打开vs选中新建项目- >选中.NET Core - >ASP.NET Core Web应用程序: 2.选择WebApi,这里我选择的是.NET core2.2为目前最新版本 3.创建好的项目结构 4.查看效果 使用浏览器打开项目查看效果: http://localhost:端口号/api/values 5.创建测试控制器类,允许跨域访问 控制器路由: [Route("api/Test")] 访问地址: http://localhost:端口号/api/Test/5 跨域处理 Core WebAPI的项目中自带了跨域Cors的处理,不需要单独添加程序包。我们只需要在全局配置处配置就可以了,打开Startup.cs public void ConfigureServices(IServiceCollection services) { services.AddMvc(); services.AddCors(options => { options.AddPolicy("any", builder => { builder.AllowAnyOrigin() //允许任何来源的主机访问 .AllowAnyMethod() .AllowAnyHeader() .AllowCredentials();//指定处理cookie }); }); }