【发布时间】:2016-10-04 00:18:20
【问题描述】:
我在我的 feathersjs REST-API 应用程序中使用 本地身份验证,但在用户通过身份验证后,而不是向我发送 身份验证令牌,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 但如果有人需要了解有关代码的更多信息,请告诉我,并且我将编辑问题以添加更多详细信息。
【问题讨论】:
-
假设股票和according to the repo,令牌在标题中(
req.headers['authorization'])。您是否尝试过使用基本的res.send(token)来代替当前的res.sendFile({authpage})机制? -
是的,我试过了,但我找不到它在哪里向我发送文件,否则我会直接发送令牌,这已经足够了。还有,你传给我的链接是验证客户端发给服务端的token,但是我需要反过来,也就是需要把token从服务端发给客户端。
-
很好,@colonelsanders!我有什么方法可以改变行为,而不是发送文件,而是发送实际的令牌?当然,编辑此文件不是一种选择……但是知道这是该文件已经使我处于更好的位置来获得解决方案。非常感谢。
标签: node.js rest authentication token feathersjs