使用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中具有标识的默认配置。 我可以说为什么它不是一个安全的好选择,但这不是重点。
你可以在“邮递员”中使用它,但这很棘手我就是这样做的:
- 通过您的登录页面提出请求:
- 获取表单中的防伪标记:
- 在登录页面上发布post请求,并以数据forms发送此邮件参数:
现在您的邮递员获得身份validationcookie,您可以使用[authorize]标签请求web api
编辑
对于工具,您必须添加授权标头。
- 进入标题表单
- 添加HTTP标头“授权”
- 点击编辑按钮etvoilà;)
屏幕截图
先前的答案已删除
对于Postman Windows App 4.6.0:
- 从您的请求集中选择您的请求
- 转到“授权”选项卡
- 选择合适的“类型”,例如“Basic Auth”
- 输入“用户名”和“密码”
- 点击“更新请求”
除了Mathieu发布的答案之外,我还必须为邮递员安装拦截器扩展( https://www.getpostman.com/docs/interceptor_cookies,https://www.getpostman.com/docs/capture )以捕获cookie 。 之后它起作用了。