Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Asp.net web api 使用Web API令牌对MVC客户端进行身份验证_Asp.net Web Api_Asp.net Mvc 5 - Fatal编程技术网

Asp.net web api 使用Web API令牌对MVC客户端进行身份验证

Asp.net web api 使用Web API令牌对MVC客户端进行身份验证,asp.net-web-api,asp.net-mvc-5,Asp.net Web Api,Asp.net Mvc 5,目前,我已经使用identity framework创建了一个WebAPI项目,并且设置了在使用API进行身份验证时要返回的令牌 因此,现在我正在考虑创建一个独立的MVC应用程序,它将允许用户调用WebAPI以获取后端数据 目标是分离功能,以便其他应用程序也可以通过web调用开始与后端数据交互 因此,现在的困惑是如何设置我的MVC项目,以便可以使用控制器上的Authorize属性以及从WebAPI接收的令牌。我想我需要在Startup.Auth.cs中的ConfigureAuth方法中启用承载令

目前,我已经使用identity framework创建了一个WebAPI项目,并且设置了在使用API进行身份验证时要返回的令牌

因此,现在我正在考虑创建一个独立的MVC应用程序,它将允许用户调用WebAPI以获取后端数据

目标是分离功能,以便其他应用程序也可以通过web调用开始与后端数据交互


因此,现在的困惑是如何设置我的MVC项目,以便可以使用控制器上的Authorize属性以及从WebAPI接收的令牌。我想我需要在Startup.Auth.cs中的ConfigureAuth方法中启用承载令牌。然而,这是否足够?或者我还需要启用cookie身份验证吗

MVC和Web Api在身份验证方面有着根本的不同。对于Web Api,必须在请求的头中设置承载令牌,但这不是问题,因为所有Api请求都是由客户端以编程方式完成的,也就是说,在设置客户端以正确验证请求时需要人工干预

MVC是一种不同的beast,因为操作通常通过web浏览器访问,而web浏览器不会自动将承载令牌附加到请求头上。它将把服务器设置的cookie传递回服务器。这就是为什么cookie auth最常用于MVC web应用程序的原因

您应该为MVC站点启用cookie身份验证,然后设置登录操作以通过Web Api进行身份验证。从Web Api获取有效身份验证后,您可以通过Identity Api手动登录用户:

await SignInManager.SignInAsync(user);

Ok有道理。那么,要利用授权属性,只需在登录到同一cookie后请求并存储声明和角色?本质上是的。我还必须创建ApplicationSignInManager实例的新实例ApplicationUserManager?但我不想创建DbContext的新实例,因为我不想直接与Identity Db通信。只能通过API调用。这是不可避免的。简而言之,如果您打算使用Identity,就不能将DB完全排除在MVC应用程序之外。要完全依赖Web Api,您必须构建自己的身份验证系统。或者,您可以找到一个能够使用Web Api的第三方系统。然而,身份是不可能的。