在ASP.NET Core中,可以使用Windows身份验证来仅接受本地管理员凭据。以下是一个包含代码示例的解决方法:
Startup.cs
文件中启用Windows身份验证中间件。在ConfigureServices
方法中添加以下代码:services.AddAuthentication(Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme);
Configure
方法中添加以下代码来配置身份验证中间件:app.UseAuthentication();
在需要进行身份验证的控制器或方法上添加[Authorize]
特性,以强制要求用户进行身份验证。
最后,可以使用[Authorize(Roles = "Administrators")]
特性来限制只有具有"Administrators"角色的用户才能访问受保护的资源。
下面是一个完整的示例:
// Startup.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
namespace YourNamespace
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(Microsoft.AspNetCore.Server.IISIntegration.IISDefaults.AuthenticationScheme);
services.AddControllersWithViews();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
}
}
}
// HomeController.cs
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace YourNamespace.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
[Authorize(Roles = "Administrators")]
public IActionResult AdminOnly()
{
return View();
}
}
}
在上面的示例中,Startup.cs
文件中的ConfigureServices
方法启用了Windows身份验证中间件,并且控制器的AdminOnly
方法使用了[Authorize(Roles = "Administrators")]
特性来限制只有具有"Administrators"角色的用户才能访问。
请注意,这种方法要求应用程序运行在IIS上,并且IIS Windows身份验证功能已正确配置。