我有一个具有Ownin cookie身份验证的MVC5客户端。我还有一个受Owin持有者令牌保护的Web (我使用了创建令牌端点的VS2013 Web模板)
好了,现在我的MVC5客户端需要使用我的WebApi了。我创建了一个方法来获取持有者令牌:
internal async Task<string> GetBearerToken(string siteUrl, string Username, string Password)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri(siteUrl);
client.DefaultRequestHeaders.Accept.Clear();
HttpContent requestContent = new StringContent("grant_type=password&username=" + Username + "&password=" + Password, Encoding.UTF8, "application/x-www-form-urlencoded");
HttpResponseMessage responseMessage = await client.PostAsync("Token", requestContent);
if (responseMessage.IsSuccessStatusCode)
{
TokenResponseModel response = await responseMessage.Content.ReadAsAsync<TokenResponseModel>();
return response.AccessToken;
}
return "";
}
在我的Mvc操作中,我称之为:
public async Task<ActionResult> Index()
{
var token = await GetBearerToken("http://localhost:6144/", "teste", "123456");
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Authorization", "Bearer "+ token);
var response = await client.GetAsync("http://localhost:6144/api/values");
if (response.IsSuccessStatusCode)
{
var data = response.Content.ReadAsAsync<IEnumerable<string>>();
return Json(data.Result, JsonRequestBehavior.AllowGet);
}
}
}
一切都很好。但我需要在我所有的行动中使用Web Api ...那么,我如何保留令牌(尽管每次请求都会获得一个新的令牌),以及如何验证它是否过期……有没有可能以某种方式将其与身份验证cookie保持在一起?有什么最好的实践来处理这种情况吗?
谢谢
https://stackoverflow.com/questions/22568409
复制相似问题