基于上下文的AspNetCore 2.0 Cookie身份验证

时间:2018-03-06 15:50:09

标签: c# asp.net-core dependency-injection asp.net-identity

我在AddAuthentication中使用netcoreapp2.0,我需要根据当前HttpContext进行不同的配置。

自2.0 the auth changes以来,在Configure中无法再使用

///NOT WORKING IN 2.0 - Obsolete
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    //...
});

app.UseGoogleAuthentication(new GoogleOptions()
{
    //...
}

我正在使用这些选项根据HttpContext

app.UseWhen(...)中的值自定义身份验证

现在通过服务执行配置:

services.AddAuthentication("Cookies")
    .AddCookie("Cookies", options =>
    {
        //...
    });

但是,服务ConfigureServicesapp中的Configure之前被实例化,因此管道中还没有上下文。 是否有任何解决方法来复制此类配置?

1 个答案:

答案 0 :(得分:0)

您可以添加两个Cookie身份验证方案,并在控制器上指定使用您需要的方案。

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();

        services
            .AddAuthentication()
            .AddCookie("Cookie1", option1 =>
            {
                // config cookie1
            })
            .AddCookie("Cookie2", option2 =>
            {
                // config cookie2
            });
    }
}

[Authorize(AuthenticationSchemes = "Cookie1")]
public class FooController
{

}

[Authorize(AuthenticationSchemes = "Cookie2")]
public class BarController
{

}