У меня есть служба веб-API, размещенная в Microsoft Azure.Мне нужен определенный метод POST, чтобы он был доступен только с одним уникальным именем пользователя и паролем.
Я понимаю, что метод [Authorize] выполняет аутентификацию на основе токенов, но он не привязан к одному имени пользователя и паролю.В моем приложении веб-интерфейс также выполняет аутентификацию при входе в систему, поэтому любой, кто регистрируется, может получить доступ к этому методу публикации, если я не ошибаюсь.(Пожалуйста, исправьте меня, если я ошибаюсь)
Я новичок в этом, не могли бы вы указать мне правильный путь, пожалуйста.
Это мой метод публикации в WebAPI, к которому я хочу обеспечить безопасный доступ с определенным уникальным именем пользователя и паролем:
[AllowAnonymous]
[HttpPost, Route("send")]
public async Task<NotificationOutcome> Post([FromBody]string message)
{
string hubName = "myHub";
string hubNameDefaultShared = "myHubNameDefaultShared";
NotificationHubClient hub = NotificationHubClient
.CreateClientFromConnectionString(hubNameDefaultShared, hubName, enableTestSend: true);
string installationId = string.Empty;
var templateParams = new Dictionary<string, string>
{
["messageParam"] = message
};
NotificationOutcome result = null;
if (string.IsNullOrWhiteSpace(installationId))
{
result = await hub.SendTemplateNotificationAsync(templateParams).ConfigureAwait(false);
}
else
{
result = await hub.SendTemplateNotificationAsync(templateParams, "$InstallationId:{" + installationId + "}").ConfigureAwait(false);
}
return result;
}
И вот как я сейчас получаю доступ к методу POST:
var client = new RestClient("myWebApiRouteName");
var request = new RestRequest(Method.POST);
request.AddHeader("Postman-Token", "46c23eba-8ca6-4ede-b4fe-161473dc063a");
request.AddHeader("cache-control", "no-cache");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("undefined", messageBody, ParameterType.RequestBody);
try
{
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}