我在 feathersjs REST-API 应用程序中使用本地身份验证,但在用户通过身份验证后,而不是向我发送身份验证令牌,feat发送以下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>
打印以下页面:
如果我从网页发送请求,我认为这样做会很好,但在我的情况下,我需要获取令牌,因为客户端是移动应用,而不是网络浏览器,所以cookies不适合我。
我可以让featherjs在响应中发送令牌吗?类似的东西:
{
token: 'açldkjfaçldkfjçasdkfjdçakfjd'
}
这样我就可以将令牌存储在移动应用中,然后使用它来验证我的feathersjs API服务器的进一步请求。
现在我不再在这里添加任何代码,因为应用程序完全是使用feathersjs提供的控制台命令完成的,例如feathers generate
,但是如果有人需要了解有关代码的更多信息,请告诉我,我将编辑问题,添加更多细节。
答案 0 :(得分:4)
您必须确保将请求中的Accept
标头设置为application/json
,否则它会假设HTML并发送您正在看到的页面。
答案 1 :(得分:0)
使用本地中间件而不是问题中引用的套接字方案。
将登录数据POST到/auth/local
将产生
{
"token": {JWT},
"data": {
"email": "admin@feathersjs.com",
"id": 0
}
}
您的客户端可以从该JSON响应中提取值并对其进行适当处理。
除此之外的大多数事情都需要修改股票Feathers演示。