万众瞩目的.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 项目中的目标框架

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

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

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

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

.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提供的帮助。

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

2:在Configure使用Cookie中间件

 app.UseAuthentication();

使用扩展类AuthenticationHttpContextExtensions

引入命名空间

using Microsoft.AspNetCore.Authentication;

新的扩展方法

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

使用方式

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

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

AuthorizeAsync现在返回结果为AuthorizationResult

新的扩展方法

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

使用方式

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

 

相关文章:

  • 2022-12-23
  • 2022-02-14
  • 2021-09-25
  • 2022-12-23
  • 2022-02-10
  • 2021-11-19
  • 2022-12-23
猜你喜欢
  • 2021-07-31
  • 2021-05-26
  • 2022-12-23
  • 2021-10-09
  • 2021-06-27
  • 2021-12-19
  • 2021-12-25
相关资源
相似解决方案