0

我有一个具有 Identity 2 安全性的 Web Api 应用程序。我可以登录并获得带有不记名令牌的响应,例如

{"access_token":"wiYvAyIgGggCmBBR36VwWZ[more...]",
 "token_type":"bearer","expires_in":1209599,
 "userName":"Ezeqiel",".issued":"Fri, 02 May 2014 15:23:27 GMT",
 ".expires":"Fri, 16 May 2014 15:23:27 GMT" }

问题是如何将此令牌发送到将来的请求,以及如何在用户未通过身份验证时重定向到登录页面。

4

1 回答 1

1

这取决于客户的类型。

如果它是一个aspnet类型的服务器端,你可以把它放在session/cache/httpcontext中,并在httpclient中与每个请求一起发送。

using (var apiClient = new HttpClient { BaseAddress = new Uri("http://localhost:54744/") })
{
    var results = apiClient.PostAsJsonAsync("api/Authenticate/Token", loginModel).Result;
    string token = results.Content.ReadAsAsync<string>().Result;
    apiClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
}

如果它是一个 javascript spa 类型的应用程序,那么在来自 javascript 的登录请求中,您会从服务器返回该令牌,并将其保存在存储或变量中,并在每个 ajax 请求中使用它。

角度看起来像这样

config.headers.Authorization = 'Bearer ' + $window.sessionStorage.token;

ajax 看起来像这样

 beforeSend: function (xhr) {
      xhr.setRequestHeader("Authorization", "Bearer $token")
    }

祝你好运

于 2014-05-04T22:38:24.583 回答