我有一个运行MVC5 WebApi 2的本地站点,那里有默认的AccountController,还有一个WebApi控制器,我已经锁定了一个WebApi属性,所以我需要登录。我想做的是先通过UWP与授权连接到它。
默认的Login方法如下所示:
//
// POST: /Account/Login
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
// This doesn't count login failures towards account lockout
// To enable password failures to trigger account lockout, change to shouldLockout: true
var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
switch (result)
{
case SignInStatus.Success:
return RedirectToLocal(returnUrl);
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.RequiresVerification:
return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "Invalid login attempt.");
return View(model);
}
}如果我试图使用邮递员投递到那个URL,我会得到一个关于防伪令牌的错误。我只是想知道我需要在Web 2端和UWP端做些什么来实现它。在UWP端,我试图通过登录按钮上的Windows.Web.Http.HttpClient在我的XAML中设置它。现在还没有代码,因为我正在邮递员中进行测试,看看我需要做些什么才能获得连接。我是否需要在AccountController上添加一个绕过防伪造令牌而只在POST方法上使用用户名/密码的方法,还是不建议这样做?
所以我的UWP只有一个用户名和密码的文本框,我想通过
发布于 2017-05-19 23:54:27
您需要将“RequestVerificationToken”标题添加到要测试的邮递员请求中。您还需要实现自己的方法,以便从api中实际获取令牌以进行测试。类似于:
[HttpPost]
[AllowAnonymous]
public IActionResult GetToken()
{
string cookieToken, formToken;
System.Web.Helpers.AntiForgery.GetTokens(null, out cookieToken, out formToken);
return this.Ok(cookieToken + ":" + formToken);
}对于您的应用程序,您需要向页面生成中添加相当于Razors @Html.AntiForgeryToken()的内容,并确保在对请求进行测试时添加标头。
https://stackoverflow.com/questions/43150809
复制相似问题