将标识从 .NET Core 1.1 升级到 2.0



我有以下代码,它在 1.1 中工作。

 public static IServiceCollection RegisterRepositoryServices(this IServiceCollection services)
        {
            services.AddIdentity<ApplicationUser, IdentityRole<int>>(
                config => { config.User.RequireUniqueEmail = true;
                    config.Cookies.ApplicationCookie.LoginPath = "/Account/Login";
                    config.Cookies.ApplicationCookie.AuthenticationScheme = "Cookie";
                    config.Cookies.ApplicationCookie.AutomaticAuthenticate = false;
                    config.Cookies.ApplicationCookie.Events = new CookieAuthenticationEvents()
                    {
                        OnRedirectToLogin = async ctx =>
                        {
                            if (ctx.Request.Path.StartsWithSegments("/visualjobs") && ctx.Response.StatusCode == 200)
                            {
                                ctx.Response.StatusCode = 401;
                            }
                            else
                            {
                                ctx.Response.Redirect(ctx.RedirectUri);
                            }
                            await Task.Yield();
                        }
                    };
                }).AddEntityFrameworkStores<VisualJobsDbContext, int>()
              .AddDefaultTokenProviders();
            services.AddEntityFrameworkSqlServer().AddDbContext<VisualJobsDbContext>();
            services.AddScoped<IRecruiterRepository, RecruiterRepository>();
            services.AddSingleton<IAccountRepository, AccountRepository>();
            return services;
        }

它现在不喜欢引用配置的部分。饼干。。。。

我一直在网上搜索,但我真的找不到任何东西来取代它。

您需要

调用AddIdentity来添加cookie身份验证服务,然后使用ConfigureApplicationCookie配置设置,如下所示:

services.AddIdentity<ApplicationUser, IdentityRole<int>>(config => {
        config.User.RequireUniqueEmail = true;
    })
.AddUserStore<UserStore<ApplicationUser, IdentityRole<int>, VisualJobsDbContext, int>>()
.AddDefaultTokenProviders();
services.ConfigureApplicationCookie(o => {
    o.LoginPath = new PathString("/Account/Login");
    o.Events = new CookieAuthenticationEvents()
    {
        OnRedirectToLogin = async ctx =>
        {
            if (ctx.Request.Path.StartsWithSegments("/visualjobs") && ctx.Response.StatusCode == 200)
            {
                ctx.Response.StatusCode = 401;
            }
            else
            {
                ctx.Response.Redirect(ctx.RedirectUri);
            }
            await Task.Yield();
        }
    };
});

此外,在您的Configure()方法中,请记住调用以下内容:

app.UseAuthentication();

延伸阅读:将身份验证和身份迁移到 ASP.NET 核心 2.0

注意:本文的以下部分涉及AutomaticAuthenticate选项:

设置默认身份验证方案

在 1.x 中,AutomaticAuthenticateAutomaticChallenge AuthenticationOptions 基类的属性旨在 在单个身份验证方案上设置。没有好办法 强制执行这一点。在 2.0 中,这两个属性已被删除为 单个AuthenticationOptions实例的属性。他们 可以在 AddAuthentication 方法调用中配置 ConfigureServices启动方法.cs:

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme);

相关内容

  • 没有找到相关文章

最新更新