• .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();

    使用扩展类AuthenticationHttpContextExtensions

    引入命名空间

    using Microsoft.AspNetCore.Authentication;

    新的扩展方法

    使用方式

    //登录
    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

  • 相关阅读:
    比赛:小奔的方案 solution
    比赛:小奔的矩形solution
    比赛:小奔与不等四边形solution
    NOIP2018普及T2暨洛谷P5016 龙虎斗
    Java-GUI基础(三)java.swing
    Java-GUI基础(二)java.awt
    Java-GUI基础(一)
    Java集合(类)框架(三)
    Java集合(类)框架(二)
    Java集合(类)框架(一)
  • 原文地址:https://www.cnblogs.com/piscesLoveCc/p/7366418.html
Copyright © 2020-2023  润新知