如何使用 feathersjs-authentication 将 JWT 令牌发送到客户端?

How to send the JWT token to the client with feathersjs-authentication?

我在 feathersjs REST-API 应用程序中使用 local authentication,但是在用户通过身份验证后, feathers 没有向我发送 身份验证令牌 ,而是发送以下 HTML 作为对身份验证请求的响应:

<body>
    <img class="logo" src="alongbase64string" alt="Feathers Logo">
    <main>
        <h1 class="center-text">Success</h1>
        <h3 class="center-text">You are now logged in. We've stored your JWT in a cookie with the name 
            <span class="italic">"feathers-jwt"</span> for you. It is:
        </h3>
        <pre id="token"></pre>
    </main>
    <script type="text/javascript">
function getCookie(name) {
  var value = "; " + document.cookie;
  var parts = value.split("; " + name + "=");
  if (parts.length == 2) return parts.pop().split(";").shift();
}

var token = getCookie('feathers-jwt');

var el = document.getElementById('token');
el.innerHTML = token;
</script>

打印以下页面:

我认为如果我从网页发送请求就足够了,但在我的情况下我需要获取令牌,因为客户端是一个移动应用程序,不是网络浏览器,所以 cookie 对我不起作用。

我可以让 feathersjs 在响应中发送令牌吗?类似于:

{
    token: 'açldkjfaçldkfjçasdkfjdçakfjd'
}

这样我就可以将令牌存储在移动应用程序中,然后使用它来验证对我的 feathersjs API 服务器的进一步请求

现在我不会在这里放更多代码,因为该应用程序完全是使用 feathersjs 提供的控制台命令创建的,例如 feathers generate 但如果有人需要了解更多有关代码的信息,请让我知道,我会编辑问题并添加更多详细信息。

使用本地中间件而不是问题中引用的套接字方案。

POST 将登录数据发送到 /auth/local 将产生

{
  "token": {JWT},
  "data": {
    "email": "admin@feathersjs.com",
    "id": 0
  }
}

您的客户端可以从 JSON 响应中提取值并适当地处理它们。

除此之外的大部分内容都需要修改现有的 Feathers 演示。

您必须确保将请求中的 Accept header 设置为 application/json 否则它会假定 HTML 并发送您看到的页面。