Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在MVC中使用使用头进行授权的webapi服务_C#_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# 在MVC中使用使用头进行授权的webapi服务

C# 在MVC中使用使用头进行授权的webapi服务,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我已经使用WebApi创建了一个restful Web服务,其中我有一个用于身份验证的端点(POST account/authenticate?username=&password=),该端点返回一个令牌-该令牌将作为授权头(承载方案)用于所有后续调用 我的问题是: 在使用Web服务的MVC应用程序中,处理这种情况的最佳方法是什么 我的想法: 对于API调用,我考虑将令牌添加到会话变量中,然后在需要时获取令牌(对于MVC到WebAPI的请求) MVC是否支持这样的开箱即用的FormsTicket

我已经使用WebApi创建了一个restful Web服务,其中我有一个用于身份验证的端点(
POST account/authenticate?username=&password=
),该端点返回一个令牌-该令牌将作为授权头(承载方案)用于所有后续调用

我的问题是:

在使用Web服务的MVC应用程序中,处理这种情况的最佳方法是什么

我的想法:

对于API调用,我考虑将令牌添加到会话变量中,然后在需要时获取令牌(对于MVC到WebAPI的请求)

MVC是否支持这样的开箱即用的FormsTickets或类似的东西?所以我们可以利用HttpContext.Current.User——或者我应该从我的令牌创建一个主体并将Current.User设置为该主体吗

在MVC中是否有一种标准的实现方法

任何帮助都将不胜感激。

任何文章都将不胜感激。

编辑: 我突然想到,我应该正确地编写一个自定义成员身份提供程序,并可能使用auth令牌设置一个cookie-设置相同的过期时间,让授权处理其余的事务 这听起来怎么样?给你们这些专家

我现在正在做什么: 在登录期间,我通过API进行身份验证并检查authToken。如果它的用户经过身份验证,并且我创建了一个FormsTicket cookie,其中令牌为userData,那么我已经将cookie的过期时间设置为与令牌相同的时间量。
当用户登录后访问站点时,我会解密cookie并将标题添加到我的restsharp调用中。

Oauth承载令牌应该可以工作。而且,session的想法非常糟糕,我的想法是……我的问题是构建一个中介层,该层将在不使用session变量的情况下保留令牌。(除非我将其推入cookie并让浏览器将其返回给我)不要使用会话。如果您使用的是mvc,即js的本地存储,那么您可以将令牌本地存储在cookie中。您可以研究将Thinktecure用于大多数繁重的工作,对于所有流都有一个完整的示例项目:这种身份验证背后的思想是它是无状态的。令牌本地存储在客户机上,并在资源服务器(API)验证每个请求时传递给API。