ASP.NET根据主机禁用授权

时间:2018-06-07 17:45:26

标签: asp.net-core

我有一个ASP.NET核心应用程序,并且我使用Authorize属性修饰了我的constroller / actions。在Startup.cs中,我已经定义了这样的身份验证:

services.AddAuthentication(Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme);

当我在IIS或IIS Express中运行我的应用程序时,授权可以正常工作。但是,我想在不支持Windows身份验证的主机(如控制台应用程序)中运行时禁用授权。

我在考虑这样做:

services.AddMvc(options =>
{
     if (!isWindowsAuthenticationSupported)
        options.Filters.Add(new AllowAnonymousFilter());
});

如果这是正确的方法,我该如何设置isWindowsAuthenticationSupported变量?

1 个答案:

答案 0 :(得分:0)

以下是确定是否支持Windows身份验证的代码:

string iisHttpAuth = Environment.GetEnvironmentVariable("ASPNETCORE_IIS_HTTPAUTH");
bool isWindowsAuthenticationSupported = false;
if (iisHttpAuth != null && iisHttpAuth.ToLowerInvariant().StartsWith("windows"))
    isWindowsAuthenticationSupported = true;