Я создаю приложение MVC, в котором стандартные контроллеры и контроллеры APIC находятся в одном проекте.Все функции работают нормально, я могу назвать контроллеров или APIControllers без проблем.
Я пытаюсь добиться того, чтобы, если вы звоните / api / products извне, он не был доступен, его могли вызывать только авторизованные пользователи.
Я добавил иАтрибут Authorize для моего контроллера API, и я все еще могу вызывать его и получать результаты из клиентского приложения, такого как Postman.Вы можете увидеть мой код ниже.
[Authorize] //System.Web.Http
public class ProductsController : ApiController
[HttpGet]
public IHttpActionResult Get()
Вот что у меня есть в моем файле Startup.Auth.cs.
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Если я закомментировал этот код, я получаю правильноеответ от APIController, но я также не могу войти.
<Error>
<Message>Authorization has been denied for this request.</Message>
</Error>
Не уверен, что мне не хватает.Насколько я понимаю, мне не нужно создавать собственный фильтр для моих контроллеров API, я должен иметь возможность использовать встроенную функцию авторизации.Дайте мне знать, если вам нужно больше деталей или примеров кода.