如何使用 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 并发送您看到的页面。
我在 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 并发送您看到的页面。