首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebAPI授权

WebAPI授权
EN

Stack Overflow用户
提问于 2017-03-31 22:58:40
回答 1查看 131关注 0票数 0

我有一个运行MVC5 WebApi 2的本地站点,那里有默认的AccountController,还有一个WebApi控制器,我已经锁定了一个WebApi属性,所以我需要登录。我想做的是先通过UWP与授权连接到它。

默认的Login方法如下所示:

代码语言:javascript
复制
    //
    // 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只有一个用户名和密码的文本框,我想通过

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-19 23:54:27

您需要将“RequestVerificationToken”标题添加到要测试的邮递员请求中。您还需要实现自己的方法,以便从api中实际获取令牌以进行测试。类似于:

代码语言:javascript
复制
[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()的内容,并确保在对请求进行测试时添加标头。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43150809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档