Как я могу защитить свой API ASP.NET с помощью собственной системы токенов

Я пытаюсь защитить свой API asp.net с помощью пользовательского System. Проблема в том, что я понятия не имею, как это сделать.

У меня уже есть (простой, но работающий) API. Способ, которым я хочу защитить, заключается в том, что в заголовке аутентификации запроса должен стоять токен. При каждом соединении с моим API должен вызываться метод (тогда метод должен возвращать логическое значение).

Конечно, я мог бы легко вызвать этот метод для каждого HttpRequest ->, но это было бы слишком просто xD.

Я хочу написать "[MyCustomAuth]" (пример) перед ApiController или около того......

Я надеюсь, вы понимаете, что я хотел бы иметь.

Спасибо!

Вы пробовали искать «аутентификацию токена asp.net» и просматривали статьи в Интернете? Это довольно распространенная установка, поэтому, если у вас есть более конкретные вопросы, пожалуйста, уточните.

Xerillio 20.12.2020 18:22

Я думаю, что я не делал что-то другое весь день.....

matthias-schneglberger 20.12.2020 18:25

Тогда, пожалуйста, уточните, что мешает вам реализовать некоторые из найденных вами решений? Ваш вопрос на данный момент не объясняет, с чем у вас возникла проблема.

Xerillio 20.12.2020 18:28

Хорошо, я попробую еще раз... В Startup у меня есть метод services.AddAuthentication -> этому методу нужны свойства сервера аутентификации (не так ли?) ... но все, что я хочу сделать, это вызвать простой метод, который возвращает true/false Я действительно не хочу создавать AuthServer....

matthias-schneglberger 20.12.2020 18:31
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
4
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать IAsyncActionFilter для такого сценария (https://learn.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-5.0)

Пример кода:

public class CustomAuthorizeAttribute : Attribute, IAsyncActionFilter
{    
    public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
    {
        //your custom logic...
        if (//condition where user is not authenticated based on your custom logic)
        {
            context.Result = new UnauthorizedResult();
            return;
        }

        await next();
    }
}

И вы можете использовать его следующим образом:

[CustomAuthorize]
public class YourController: SomeControllerBase
{
}

Другие вопросы по теме