如何使用feathersjs-authentication将JWT令牌发送到客户端?
我在我的feathersjs REST-API应用程序中使用了本地身份validation ,但是在用户通过身份validation之后,而不是向我发送身份validation令牌 ,羽毛会发送以下HTML作为对身份validation请求的响应:
<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>
打印以下页面:
如果我从网页发送请求,我认为这将工作得很好,但在我的情况下,我需要获取令牌,因为客户端是一个移动应用程序 ,而不是一个Web浏览器,所以cookies不适合我。
是否有可能让羽毛在响应中发送令牌? 就像是:
{ token: 'açldkjfaçldkfjçasdkfjdçakfjd' }
这样我可以将令牌存储在移动应用程序中,并使用它来validation对我的feathersjs API服务器的更多请求 。
现在,我不会在这里再放置任何代码,因为应用程序完全是由feathersjs提供的控制台命令完成的,就像feathers generate
但是如果有人需要更多地了解代码,请让我知道,我将编辑问题添加更多的细节。
您必须确保将请求中的Accept
标头设置为application/json
否则将采用HTML并发送您所看到的页面。
使用本地中间件而不是问题中引用的套接字scheme。
将login数据发送到/auth/local
将会产生错误
{ "token": {JWT}, "data": { "email": "admin@feathersjs.com", "id": 0 } }
您的客户端可以从该JSON响应中提取值并适当地处理它们。
除此之外,大多数情况下都需要修改库存Feathers演示。