.NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)

.NET Core 2.0 新时代

万众瞩目的.NET Core 2.0终于发布了,原定于9.19的dotnetconf大会的发布时间大大提前了1个月,.NET Core 2.0/.NET Standard 2.0的正式发布是.NET 开源跨平台的一个重大里程碑。

.NET Core 2.0 SDK下载地址:https://www.microsoft.com/net/download/core#/sdk

Visual Studio 2017 15.3下载地址:https://www.visualstudio.com/zh-hans/downloads/

更新ASP.NET Core 项目中的目标框架

更新ASP.NET Core Web项目中的Nuget依赖项

备注:删除之前的 Microsoft.* 依赖项,使用 Microsoft.AspNetCore.All。

.NET Core 2.0 更新Cookie中间件使用方法

备注:我这边当前项目单独使用的Cookie中间件,未结合Identity使用。

1:在ConfigureServices添加Cookie中间件,使用自定义Scheme(坑就在这里) 

services.AddAuthentication(options=> {
                options.DefaultChallengeScheme = CookieAuthenInfo.QwCmsWebCookieInstance;
                options.DefaultSignInScheme = CookieAuthenInfo.QwCmsWebCookieInstance;
                options.DefaultAuthenticateScheme = CookieAuthenInfo.QwCmsWebCookieInstance;
            })
            .AddCookie(CookieAuthenInfo.QwCmsWebCookieInstance, m =>
            {
                m.LoginPath = new PathString("/Account/Login");
                m.AccessDeniedPath = new PathString("/Account/Denied");
                m.LogoutPath = new PathString("/Account/Logout");
                m.Cookie.Path = "/";
             });

踩坑:报异常 No authenticationScheme was specified, and there was no DefaultChallengeScheme found.

特别感谢Zonciu提供的帮助。

2:在Configure使用Cookie中间件

 app.UseAuthentication();

使用Microsoft.AspNetCore.Authentication.AuthenticationHttpContextExtensions

新的扩展方法

使用方式

//登录
await HttpContext.SignInAsync(CookieAuthenInfo.QwCmsWebCookieInstance, userPrincipal,
      new AuthenticationProperties
      {
          ExpiresUtc = DateTime.UtcNow.AddHours(12),
          IsPersistent = true,
          AllowRefresh = false
      });

//退出
await HttpContext.SignOutAsync(CookieAuthenInfo.QwCmsWebCookieInstance); 

AuthorizeAsync现在返回结果为AuthorizationResult

新的扩展方法

使用方式

var result = await HttpContext.AuthenticateAsync("xxxx");
if (result.Succeeded)
{
    ......
} 

参考

1:[Draft] Auth 2.0 Migration announcement #1310

2:Migrating Authentication and Identity to ASP.NET Core 2.0

时间: 2024-10-27 07:54:06

.NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)的相关文章

如何使EF Core不插入MySql中自增长的主键(踩坑实录)

公司要求使用 .Net Core + EF Core + Mysql 开发项目,为了以后可以部署到Linux服务器上,实际是奇葩的客户需求. 数据库设计时虽然大部分表的主键都采用了UUID(也就是SQL Server的GUID),好处是啥我也就不(bu)说(hui)了(shuo),大家自行百度下吧. 而对于一些不是那么重要的表,或者说会经常产生大量数据的表,我们都是用自增长的主键,然后重点来了,在使用“Scaffold”命令生成实体类的时候,是下面这样的: public partial clas

ASP.NET Core 2.1 : 十.升级现有Core2.0 项目到2.1

.NET Core 2.1 终于发布了, 赶紧升级一下. 一. 安装SDK 首先现在并安装 SDK(64-bit) 安装完毕后如果新建项目可以看到已经有2.1的选项了 二. 更新现有2.0项目到2.1 1. 修改 项目版本 右键点击解决方案管理器中的项目, 选择编辑项目名.csproj 将 <TargetFramework>netcoreapp2.0</TargetFramework> 中的2.0改为2.1,保存. 2. 将引用 Microsoft.AspNetCore.All 

ASP.NET MVC升级到ASP.NET Core MVC踩坑小结

原文:ASP.NET MVC升级到ASP.NET Core MVC踩坑小结 写在前面 ASP.NET Core是微软新推出的支持跨平台.高性能.开源的开发框架,它的优势不必多说,因为已经说得太多了.当然,现在依然有着数量庞大的系统运行于.NET Framework上,由于有大量的Break Changes,很多项目项目团队也不敢贸然升级,其中的考量也不全部是技术原因,更多的可能还是业务推进因素. 小编自年前开始考虑升级一套电商系统,原先是基于.NET Framework 4.5的,打算直接升级到

NET Core 2.0使用Cookie认证实现SSO单点登录

NET Core 2.0使用Cookie认证实现SSO单点登录 之前写了一个使用ASP.NET MVC实现SSO登录的Demo,https://github.com/bidianqing/SSO.Sample,这个Demo是基于.NET Framework,.NET Core 2.0出来了试着使用ASP.NET Core尝试一下.假如我们有三个站点 domain.dev order.domain.dev passport.domain.dev domain.dev作为我们的主站肯定是可以匿名访问

Zabbix2.4 升级到3.0

软件 升级前 升级后 Php 5.3.3 5.6.6 (要求>5.4) Apache 2.2.15 2.2.15(不变) Mysql 5.1.73 5.1.73(不变) CentOS CentOS 6.3 x86_64 CentOS 6.3 x86_64(不变) Zabbix 2.4.4 3.0.4 前提: zabbix2.4.4 正在运行中. 已有apache+mysql+php环境. Centos6.3 yum安装的php是5.3 版本,故接下来采用编译的方式安装php5.6.6 Apach

NET Core 1.1 版本项目和2.0环境下的项目开发注意事项

在NET Core 1.1开发下的项目最好不要随便把工具更新升级到2.0,这样最容易导致之前的.NETCore直接被升级不兼容早前版本 会引起项目无法启动在运行调试IIS express 时候直接一闪而过 如果要在2.0下进行相关项目开发一定另开新的开发机器配置新的版本, 如果在1.1版本项目不小心直接把VS工具升级到最新版本,直接从新下载安装原来版本的DotNetCore的类库即可.这样程序即可正常调试运行

zabbix2.2升级到3.0.4

需求:zabbix2.2升级到3.0.4 备注:zabbix 2.5之后对php有严格要求,php版本必须大于php5.4 php升级可以覆盖安装,也可以多处安装再选择,此处选择后者. 安装php5.6.24 yum install -y libxml2 libxml2-devel \ openssl openssl-devel \ curl* libcurl* \ libvpx* libjpeg* \ libpng libpng-devel \ freetype* t1lib* \ zlib

Ubuntu 16.04升级4.7.0内核后导致Compiz奔溃,问题:compiz[4852]: segfault at 48 ip 00007f88cae087f0 sp 00007ffce354c268 error 4 in libscale.so

由于硬件的驱动支持问题,升级4.7.0的内核主要是为了能使用Intel HD Graphics 630驱动,但是也出现了相关问题,比如Compiz的特效导致桌面上如果有多个相同程序启动,然后再次点击时就会出现闪烁和崩溃问题.查找日志如下: compiz[4852]: segfault at 48 ip 00007f88cae087f0 sp 00007ffce354c268 error 4 in libscale.so[7f5ce70cb000+24000] 解决方法: 这些方法只能尝试,不一定

jQuery升级踩坑大全

背景 jQuery想必各个web工程师都再熟悉不过了,不过现如今很多网站还采用了很古老的jQuery版本.其实如果早期版本使用不当,可能会有DOMXSS漏洞,非常建议升级到jQuery 1.9.x或以上版本.前段时间我就主导了这件事情,把公司里我们组负责的项目jQuery版本从1.4.2升级到了jQuery 1.11.3.jQuery官方也为类似升级工作提供了jQuery Migrate插件. 言归正传. 坑从何处来 jQuery 1.11.3是1.x时代的最后一个版本(作者更新:2016年1月