使用Postman进行ASP.NET Web API授权

我创建了一个ASP.NET Web API并将Authorize属性应用于API控制器。 现在,我想使用Postman测试它,但我收到了授权错误。

控制器代码是:

[Authorize] [HttpPost] public IHttpActionResult Attend([FromBody] int gigId) { var attendance = new Attdendance { GigId = gigId, AttendeeId = User.Identity.GetUserId() }; _context.Attdendances.Add(attendance); _context.SaveChanges(); return Ok(); } 

我的请求看起来像http://prntscr.com/c8wz0b

我正在使用这个先进的Postmanrest客户端http://prntscr.com/c8xafd

我如何通过Postman授权?

编辑23/08/2016我假设您正在使用身份进行cookie身份validation

 // Enable the application to use a cookie to store information for the signed in user // and to use a cookie to temporarily store information about a user logging in with a third party login provider // Configure the sign in cookie app.UseCookieAuthentication(new CookieAuthenticationOptions { AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, LoginPath = new PathString("/Account/Login"), Provider = new CookieAuthenticationProvider { // Enables the application to validate the security stamp when the user logs in. // This is a security feature which is used when you change a password or add an external login to your account. OnValidateIdentity = SecurityStampValidator.OnValidateIdentity( validateInterval: TimeSpan.FromMinutes(30), regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager)) } }); 

这是Visual Studio中具有标识的默认配置。 我可以说为什么它不是一个安全的好选择,但这不是重点。

你可以在“邮递员”中使用它,但这很棘手我就是这样做的:

  1. 通过您的登录页面提出请求: 在此处输入图像描述
  2. 获取表单中的防伪标记: 在此处输入图像描述
  3. 在登录页面上发布post请求,并以数据forms发送此邮件参数: 在此处输入图像描述

现在您的邮递员获得身份validationcookie,您可以使用[authorize]标签请求web api

编辑

对于工具,您必须添加授权标头。

  • 进入标题表单
  • 添加HTTP标头“授权”
  • 点击编辑按钮etvoilà;)

屏幕截图

先前的答案已删除

对于Postman Windows App 4.6.0:

  1. 从您的请求集中选择您的请求
  2. 转到“授权”选项卡
  3. 选择合适的“类型”,例如“Basic Auth”
  4. 输入“用户名”和“密码”
  5. 点击“更新请求”

除了Mathieu发布的答案之外,我还必须为邮递员安装拦截器扩展( https://www.getpostman.com/docs/interceptor_cookies,https://www.getpostman.com/docs/capture )以捕获cookie 。 之后它起作用了。