.NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > .NET Core 从1.1升级到2.0记录(Cookie中间件踩坑)

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

 2017/8/15 21:31:24  雨~桐  程序员俱乐部  我要评论(0)
  • 摘要:.NETCore2.0新时代万众瞩目的.NETCore2.0终于发布了,原定于9.19的dotnetconf大会的发布时间大大提前了1个月,.NETCore2.0/.NETStandard2.0的正式发布是.NET开源跨平台的一个重大里程碑。.NETCore2.0SDK下载地址:https://www.microsoft.com/net/download/core#/sdkVisualStudio201715.3下载地址:https://www.visualstudio.com/zh
  • 标签:.net net 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(坑就在这里) 

class="brush:csharp;gutter:true;">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 header-number">#1310

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

 

上一篇: 中国联通推芝麻学子卡:16元月费1GB全国流量 下一篇: 没有下一篇了!
发表评论
用户名: 匿名