.NET Bearer Token не может [Авторизоваться] всегда 401 Несанкционировано - PullRequest
0 голосов
/ 15 мая 2018

Я очень новичок в .NET и пытаюсь внедрить Bearer Token в какой-то WebAPI:

Мой контроллер:

public class ClientController : Controller
{
    [Route("/api")]
    [AllowAnonymous]
    [HttpGet("{clientKey}")]
    public async Task<IActionResult> UserLogin(string clientKey)
    {
        SQLDataResult response = null;

        List<SqlParameter> parameters = new List<SqlParameter>();
        parameters.Add(new SqlParameter("@clientKey", clientKey));

        response = await new SQLDataContext().StoredProcedureExecuteReaderAsync<SQLDataResult>("ClientCheck", parameters);

        if (response == null)
        {
            response = new SQLDataResult();
            return Ok(response);
        }
        else
        {
            var token = new JwtTokenBuilder()
                .AddSecurityKey(JwtSecurityKey.Create("imarh-secret-key"))
                .AddSubject("imarh")
                .AddIssuer("imarh.Security.Bearer")
                .AddAudience("imarh.Security.Bearer")
                .AddClaim("MembershipId", "111")
                .AddExpiry(1)
                .Build();
            return Ok(token.Value);
        }
    }

    [Authorize]
    [HttpPost] 
    [Route("/api/get/{clientID}")]
    public async Task<IActionResult> ClientAssign(string clientID)
    {
        SQLDataResult response = null;

        List<SqlParameter> parameters = new List<SqlParameter>();
        parameters.Add(new SqlParameter("@clientID", clientID));
        response = await new SQLDataContext().StoredProcedureExecuteReaderAsync<SQLDataResult>("ClientAssign", parameters);

        if (response == null)
            response = new SQLDataResult();

        return Ok(response);
    }
}

Токен работает правильно. Когда я удалю атрибут [Authorize] из второго API, я получу правильный результат из базы данных. Но при возврате и передаче сгенерированного токена в заголовке авторизации я всегда получаю 401 несанкционированный без результата.

1 Ответ

0 голосов
/ 16 мая 2018

Предположим, что это может произойти в разных случаях, но в моем случае единственным, который устраняет проблему, было:

// app.UseMvc();

в Startup.cs

...