我已经按照我可以找到的教程和堆栈溢出问题进行操作,但仍然存在一个问题,即我在使用 [Authorize] 属性装饰的方法上收到 403 Forbidden。
这是一种有效的方法,可以证明 Google Chrome 在调试期间将我的 Windows 凭据传递给在 IISExpress 中运行的站点。
public IActionResult Index()
{
ViewBag.UserIdentityIsAuthenticated = User.Identity.IsAuthenticated;
ViewBag.UserIdentityName = User.Identity.Name;
ViewBag.UserIsInRoleTechnical = User.IsInRole("ADSecurityGroupOne");
ViewBag.UserIsInRoleTechnicalPeople = User.IsInRole("ADSecurityGroupOneTwo");
return View();
}
这是一种因 403 而失败的方法,它只应该显示视图,它还没有链接到任何数据库。
[Authorize(Policy = "AllowedOnly")]
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Index(AccountViewModel model)
{
if (ModelState.IsValid)
{
return View();
}
else
return View();
}
这是来自 Startup.cs 的 ConfigureServices 方法
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddOptions();
ApplicationSettings appSettings = new ApplicationSettings();
Configuration.GetSection("ApplicationSettings").Bind(appSettings);
services.AddAuthentication(IISDefaults.AuthenticationScheme);
services.AddAuthorization(options => options.AddPolicy("AllowedOnly", policy => policy.RequireRole(appSettings.AllowedToMigrate)));
}
我已经确认 AllowedToMigrate 的值与 appsettings.json 中指定的值相同。
{
"ApplicationSettings": {
"AllowedToMigrate": "ADSecurityGroupOne,ADSecurityGroupTwo"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
为什么[Authorize(Policy = "AllowedOnly"]失败?
心有法竹
慕的地8271018
相关分类