我们是否可以将基于令牌的身份验证的Web API 2用作单独的项目

时间:2017-01-17 13:22:54

标签: c# oauth-2.0 cors owin-middleware

我的解决方案中有一个Web API 2项目,其中我使用的是令牌基本身份验证。现在必须从角度js使用Web API。为此,我有一个单独的项目,我使用$ http来使用Web API。但我无法访问资源。我在Web API项目中配置了CORS。任何人都可以知道如何消费它。 我正在请求来自http://localhost:54536的网络API。 使用以下代码注册用户:



this.register = function (userInfo) {
    var resp = $http({
        url: "http://localhost:64551/api/Account/Register",
        method: "POST",
        data: userInfo,
    });
    return resp;
};




web api控制器代码:

// POST api/Account/Register
    [AllowAnonymous]
    [Route("Register")]
    public async Task<IHttpActionResult> Register(RegisterBindingModel model)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        IdentityUser user = new IdentityUser
        {
            UserName = model.UserName
        };
    IdentityResult result = await UserManager.CreateAsync(user, model.Password);
    IHttpActionResult errorResult = GetErrorResult(result);

    if (errorResult != null)
    {
        return errorResult;
    }

    return Ok();
}

我添加了用于启用CORS的Web配置设置。

<system.webServer>
<customHeaders>
    <add name="Access-Control-Allow-Origin" value="localhost:54536" />
    <add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, DELETE" />
  </customHeaders>
</httpProtocol>

我正在使用OWIN中间件来验证用户身份。 为了启用CORS,我在&#34; Startup&#34;中添加了以下代码:类

HttpConfiguration config = new HttpConfiguration();
        ConfigureAuth(app);
        WebApiConfig.Register(config);
        app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
        app.UseWebApi(config);

我在注册页面上收到以下错误

  

XMLHttpRequest无法加载// localhost:64551 / api / Account / Register。   对预检请求的响应没有通过访问控制检查:   &#39;访问控制允许来源&#39;标头包含多个值   &#39; // localhost:54536,// localhost:54536&#39;,但只允许一个。   起源&#39; // localhost:54536&#39;因此不允许访问。

0 个答案:

没有答案