代码之家  ›  专栏  ›  技术社区  ›  Joe Belladonna

Angular5 WebApi令牌授权不工作

  •  1
  • Joe Belladonna  · 技术社区  · 8 年前

    我正在尝试为Angular5客户端和WebApi服务器应用程序实现令牌授权。我已成功创建了相关项目的WebApi部分,当我尝试通过“邮递员”获取令牌时,我得到了良好的响应: Postman request and server answer

    我正试图用Angular5实现同样的目标。这是angular的电话:

    login(user: string, pass: string) {
        let params = new HttpParams()
            .append('grant_type', 'password')
            .append('username', user)
            .append('password', pass);
        let headers = new HttpHeaders()
            .set('Content-Type', 'application/x-www-form-urlencoded');
     return this._http.post<boolean>('auth', params, { headers: headers });
    }
    

    当我运行这个程序时,我不断收到来自服务器的“错误请求”。 Chrome response

    如果有人有任何想法,我将不胜感激。提前谢谢。

    1 回复  |  直到 8 年前
        1
  •  1
  •   Joe Belladonna    8 年前

    谢谢大卫的帮助。我尝试了您的解决方案,但直到我更改了WebAPI CORS设置后才有所帮助。问题在于飞行前CORS请求。我按照 this article 这就解决了我的问题。

    简而言之:

    1. 我清除了WebAPI上有关CORS的所有设置,并安装了 Microsoft.Owin.Cors 包裹
    2. 然后我修改了 ConfigureAuth 中的方法 App_Start\Startup.Auth.cs 具有以下代码的文件:

      public void ConfigureAuth(IAppBuilder app) { app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
      app.UseOAuthBearerTokens(OAuthOptions); }

    这就解决了这个问题,即使我的代码从问题的角度来看也是如此。现在工作正常。

    推荐文章