使用用户名和密码的安全Web API发布方法

时间:2018-10-10 19:56:22

标签: asp.net-web-api restful-authentication

我在Microsoft Azure中托管了Web API服务。我需要一种特定的POST方法,才能使用一个唯一的用户名和密码进行访问。

我了解[Authorize]方法会执行基于令牌的身份验证,但它并不与单个用户名和密码相关联。在我的应用程序中,Web api还执行登录身份验证,因此,如果我没有记错的话,任何注册者都可以访问此post方法。 (如果我做错了,请纠正我)

这是我的新手,请您以正确的方式指导我。

这是我的WebAPI Post方法,我想使用特定的唯一用户名和密码来确保访问权限:

    [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);
            }

0 个答案:

没有答案