使用 C# Web Api 和 axios 进行令牌认证

Posted

技术标签:

【中文标题】使用 C# Web Api 和 axios 进行令牌认证【英文标题】:Token authentication with C# Web Api and axios 【发布时间】:2018-12-10 15:42:04 【问题描述】:

我正在实现登录。我可以在 Postman 中向端点令牌发送 post 请求,但不能在 axios 中。

axios函数:

axios(
    method: 'post',
    url: 'http://localhost:20449/token',
    headers: 
      'Content-type': 'application/x-www-form-urlencoded'
    ,
    data: 
      'grant_type': 'password',
       'username': user.username,
       'password': user.password
    
).then(resp => 
   console.log(resp)
   commit(AUTH_SUCCESS, resp)
   dispatch(USER_REQUEST)
   resolve(resp)
)

我得到了错误

“unsupported_grant_type”

【问题讨论】:

【参考方案1】:

我找到了解决方案。当data是对象时,axios默认使用application/json。即使在标头中添加 application/x-www-form-urlencoded 后它也不起作用。所以我下载了包 qs(npm install qs --save)。我导入包并使用下面的 axios 命令:

var qs = require('qs');
axios.post('/foo', qs.stringify( 'bar': 123 );

【讨论】:

以上是关于使用 C# Web Api 和 axios 进行令牌认证的主要内容,如果未能解决你的问题,请参考以下文章

Nativescript Axios 调用 Web API

尝试使用 axios 在 React/Phoenix 应用程序中进行 API 调用(使用早午餐)

在C#中使用科大讯飞Web API进行语音合成

使用 axios 和 nuxt 进行服务器和客户端 API 调用的不同 baseURL

使用 Protractor+AXIOS 进行 API 测试

使用 laravel-cors 和 axios 进行 POST 的 Laravel “CSRF 令牌不匹配”