我有以下代码,它在 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 中,
AutomaticAuthenticate
和AutomaticChallenge
AuthenticationOptions 基类的属性旨在 在单个身份验证方案上设置。没有好办法 强制执行这一点。在 2.0 中,这两个属性已被删除为 单个AuthenticationOptions
实例的属性。他们 可以在AddAuthentication
方法调用中配置ConfigureServices
启动方法.cs:
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme);