首页 文章

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

提问于
浏览
1

我有一个基于默认Visual Studio模板的ASP.Net MVC应用程序,使用asp.net身份上的个人用户帐户 . 登录后,对MVC控制器的调用显示用户已通过身份验证,我可以转发到SecurityIdentity以检查声明 .

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

编辑2015年12月1日:

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

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

1 回答

  • 0

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

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

    HttpContext的 . Current .GetOwinContext() . GetUserManager()

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

相关问题