asp.Net   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – 使用令牌认证访问Web Api的MVC .NET cookie认证系统大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个Mvc 5客户端拥有自己的cookie认证。
还有一个受到Owin承载令牌保护的Web Api(我使用了创建令牌端点的VS2013 Web Api模板)

好的,现在我的Mvc 5客户端需要使用我的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在一起吗?
处理这种情况的最好的方法?

谢谢

解决方法

如果我正确的话,您的MVC 5客户端应用程序正在访问不同应用程序的WebAPI。 @H_244_2@mVC 5客户端使用COokie来验证用户。要访问WebAPI,您可以从/ Token端点获取承载信号,并将其发送到授权标头。

您不要从客户端Javascript代码调用WebAPI,您只需要在MVC操作的MVC操作运行MVC5应用程序的服务器上调用它。

在每个服务调用声音错误之前获取一个新的令牌。这意味着每次两次往返。这不能执行。

如果我是对的,你可以:

>将令牌存储在Session对象中。只要您的MVC应用程序的用户进行身份验证,并且他的会话仍然存在,那么您将始终拥有相同的令牌。
如果它已过期,您可以从WebAPI获得401未经授权的访问。
要保持您的MVC动作单元可测试,您可以将会话访问包装到您注入到Action(依赖注入)中的服务中。
>您可以将令牌存储在类似于已存在的Authentication Cookie的cookie中。这样您就不需要在服务器端进行会话。再次,我将包含访问权限,从Cookie中获取所有操作使用的服务中的令牌。

我将使用会话存储。简单。直向前
也许我错过了一些东西

希望这可以帮助你。反馈赞赏:-)

大佬总结

以上是大佬教程为你收集整理的asp.net-mvc – 使用令牌认证访问Web Api的MVC .NET cookie认证系统全部内容,希望文章能够帮你解决asp.net-mvc – 使用令牌认证访问Web Api的MVC .NET cookie认证系统所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。