zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    Leetcode Reverse Words in a String
    topcoder SRM 619 DIV2 GoodCompanyDivTwo
    topcoder SRM 618 DIV2 MovingRooksDiv2
    topcoder SRM 618 DIV2 WritingWords
    topcoder SRM 618 DIV2 LongWordsDiv2
    Zepto Code Rush 2014 A. Feed with Candy
    Zepto Code Rush 2014 B
    Codeforces Round #245 (Div. 2) B
    Codeforces Round #245 (Div. 2) A
    Codeforces Round #247 (Div. 2) B
  • 原文地址:https://www.cnblogs.com/piscesLoveCc/p/7366418.html
Copyright © 2011-2022 走看看