C# 在MVC中使用使用头进行授权的webapi服务
我已经使用WebApi创建了一个restful Web服务,其中我有一个用于身份验证的端点(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
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。