{"错误":" unsupported_grant_type"}用于角度通话

时间:2017-06-08 15:13:31

标签: angularjs typescript asp.net-web-api jwt

我检索jwt令牌的api post调用响应400错误。这是我的api角度电话。我也尝试过使用URLSearchparams。

authenticateUser(userid: string, password: string) {
        // var authorization_grant = "password";
        // let body = new URLSearchParams();
        // body.append('username', userid);
        // body.append('password', password);
        // body.append('grant_type', authorization_grant);
        let body = 'userName=' + userid+ '&password=' +password +'&grant_type=password';
        let headers = new Headers();
        headers.append('Content-Type', 'application/x-www-form-urlencoded');
        headers.append('Access-Control-Allow-Origin', '*');
        let options = new RequestOptions({ headers: headers });

        return this.http.post(this.config.apiBaseUrl + '/token', body, options).retry(3).map((res: Response) => {
            if (res.status == 200) {
                this.validatedUser = res.json();
                localStorage.setItem("access_token", this.validatedUser.access_token);
            }
            return this.validatedUser;
        })
    }

1 个答案:

答案 0 :(得分:2)

好的,在调查了Fiddler工具中的流量之后,我比较了从postman和angular调用时的标题。

在客户端: 我删除了行header.append(' Access-Control-Allow-Origin',' *');从我的代码解决了这个问题。

在服务器端 最重要的是,我将app.UseCors(CorsOptions.AllowAll)代码行移到了app.UseOAuthAuthorizationServer的顶部,我在startup.cs中生成了令牌。

感谢@jps,@ biswajit-rout和@Ruard Van Elburg进行调查。