Angularjs Asp.Net MVC授权未在Web API调用中进行身份验证

Angularjs Asp.Net MVC授权未在Web API调用中进行身份验证,angularjs,asp.net-mvc,kendo-ui,asp.net-identity,asp.net-web-api,Angularjs,Asp.net Mvc,Kendo Ui,Asp.net Identity,Asp.net Web Api,我有一个基于默认Visual Studio模板的ASP.Net MVC应用程序,使用ASP.Net标识上的单个用户帐户。 登录后,对MVC控制器的调用显示用户正在进行身份验证,我可以强制转换到SecurityIdentity以检查声明 但是,当我在同一个项目中调用Web API控制器时,请求显示为未经过身份验证。如何使用mvc登录中的身份验证信息并将其传递给Web API控制器,以便这些请求也在服务器上显示为已验证 2015年12月1日编辑: 我可能应该提到我正在使用angular.js(和Ke

我有一个基于默认Visual Studio模板的ASP.Net MVC应用程序,使用ASP.Net标识上的单个用户帐户。 登录后,对MVC控制器的调用显示用户正在进行身份验证,我可以强制转换到SecurityIdentity以检查声明

但是,当我在同一个项目中调用Web API控制器时,请求显示为未经过身份验证。如何使用mvc登录中的身份验证信息并将其传递给Web API控制器,以便这些请求也在服务器上显示为已验证

2015年12月1日编辑:

我可能应该提到我正在使用angular.js(和KendoUI)调用服务器上的api控制器。这些帖子没有身份验证信息,因此服务器端的Request.IsAuthenticated返回false。如何将身份信息输入到api的这些ajax帖子中


我想成功登录MVC后返回浏览器的cookie会被浏览器自动附加到同一服务器的所有后续帖子中吗?它适用于对我的mvc控制器的调用(其中Request.IsAuthenticated==true),但不适用于对我的api控制器的ajax帖子

您需要在api操作上添加Authorize[Roles=“Role1,Role2”]属性,就像对非api控制器一样

但是,如果您需要访问声明,则可以通过以下方式访问UserManager:

HttpContext.当前.GetOwinContext().GetUserManager()


并且需要对Microsoft.AspNet.Identity.Owin的引用。

您需要在API操作上添加Authorize[Roles=“Role1,Role2”]属性,就像使用非API控制器一样

但是,如果您需要访问声明,则可以通过以下方式访问UserManager:

HttpContext.当前.GetOwinContext().GetUserManager()


并且需要对Microsoft.AspNet.Identity.Owin的引用。

嗨,马吕斯,这并不能回答我的问题。我遇到的核心问题是,对API方法的请求显示为未经身份验证。如果您的用户在其中一个方法中进行了身份验证,但在另一个方法中未进行身份验证,则表示您的Identity Manager的配置有问题。您至少可以访问您的用户吗?问题是,任何api路由的ajax帖子都不包含任何身份验证信息。所以在服务器端,Request.IsAuthenticated返回false。嗨,马吕斯,这并没有回答我的问题。我遇到的核心问题是,对API方法的请求显示为未经身份验证。如果您的用户在其中一个方法中进行了身份验证,但在另一个方法中未进行身份验证,则表示您的Identity Manager的配置有问题。您至少可以访问您的用户吗?问题是,任何api路由的ajax帖子都不包含任何身份验证信息。因此,在服务器端,Request.IsAuthenticated返回false。