1

我在我的 feathersjs REST-API 应用程序中使用本地身份验证,但是在用户通过身份验证后,羽毛不是向我发送身份验证令牌,而是发送以下 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但是如果有人需要了解更多关于代码的信息,请告诉我,我将编辑添加的问题更多细节。

4

2 回答 2

4

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

于 2016-06-04T01:02:55.050 回答
0

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

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

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

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

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

于 2016-06-03T21:26:31.573 回答