Я работаю над настройкой скелета пользовательской авторизации на основе политики, которая будет иметь набор бизнес-правил для авторизации текущего пользователя. Но в настоящее время скелет всегда заканчивается 401 Unauthorized
.На основе авторизации на основе основной политики Asp.Net заканчивается 401 Unauthorized
Вот мой код,
public class MyAuthorizationRequirement : IAuthorizationRequirement
{
public MyAuthorizationRequirement()
{
}
}
public class MyAuthorizationHandler : AuthorizationHandler<MyAuthorizationRequirement>
{
public MyAuthorizationHandler()
{
}
protected override void Handle(AuthorizationContext context, MyAuthorizationRequirement requirement)
{
context.Succeed(requirement);
}
}
И следуя в Startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IAuthorizationHandler, MyAuthorizationHandler>()
.AddAuthorization(options =>
{
options.AddPolicy("MyAuthorization",
policy => policy.Requirements.Add(new MyAuthorizationRequirement()));
});
}
И это, как я использую его в моем HomeController
(MVC 6)
[Authorize(Policy = "MyAuthorization")]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
When Я не помещаю атрибут Authorize
, представление индекса отлично. Но, когда я включаю атрибут Authorize
, я просто получаю пустой вид. И когда я проверяю инструменты разработчика (Сеть), я получаю следующее за деталями сцены.
Request URL:http://localhost:51129/
Request Method:GET
Status Code:401 Unauthorized
Remote Address:[::1]:51129
В контрольных точках в конструкторы моих требований и обработчиков классов вызываются, но контрольные точки к Handle
методе Handler
класса и Index
метода Controller
класса никогда не получают вызов.
Использовали ли вы какое-либо «промежуточное программное обеспечение аутентификации»? –