我想在我的快递节点应用程序中使用express-jwt,但我找不到任何证明登录部分的示例。
请帮忙吗?
答案 0 :(得分:2)
我建议您尝试了解JWT的原理以及它们如何在服务器和客户端之间传递以及如何在服务器端与秘密进行匹配-这是doc
有效载荷可以是任何用户数据-即:仅是用户名或ID
基本上,您需要一种服务,该服务在成功身份验证时会生成令牌(当用户使用适当的凭据登录时,即eE:usr&pwd),并创建一个带有令牌的附加标头,以用于对服务器的进一步请求。
对于express-jwt,您显然需要安装以下软件包(与jsonwebtoken相同):
npm install jwt-express --save
然后将其初始化为:
var jwt = require('jwt-express');
app.use(jwt.init('secret'));
来自文档:
jwt.init()函数返回Express的中间件函数,因此 必须在app.use()中调用它。它将自动读取 来自Cookie或授权标头的JWT(由 您),并将JWT对象添加到请求对象(req)。它也会 将jwt()方法添加到Response对象(res)以创建/存储 智威汤逊。必须在其他jwt方法之前调用jwt.init()。
这些是您的选择:
其余的逻辑由您决定,但是我的示例应为您提供一个如何在应用程序中管理jwt的思路。
这是我如何通过jsonwebtoken实现jwt的示例:
// INFO: Function to create headers, add token, to be used in HTTP requests
createAuthenticationHeaders() {
this.loadToken(); // INFO: Get token so it can be attached to headers
// INFO: Headers configuration options
this.options = new RequestOptions({
headers: new Headers({
'Content-Type': 'application/json', // INFO: Format set to JSON
'authorization': this.authToken // INFO: Attach token
})
});
}
// INFO: Function to get token from client local storage
loadToken() {
this.authToken = localStorage.getItem('token');; // Get token and asssign to
variable to be used elsewhere
}
和一些存储用户状态的功能,即:
// INFO: Function to store user's data in client local storage
storeUserData(token, user) {
localStorage.setItem('token', token); // INFO: Set token in local storage
localStorage.setItem('user', JSON.stringify(user)); // INFO: Set user in local
storage as string
this.authToken = token; // INFO: Assign token to be used elsewhere
this.user = user; // INFO: Set user to be used elsewhere
}
和注销功能以销毁本地存储中的令牌,即:
// INFO: Function for logging out
logout() {
this.authToken = null; // INFO: Set token to null
this.user = null; // INFO: Set user to null
localStorage.clear(); // INFO: Clear local storage
}
如果您使用npm的jsonwebtoken,则可以在生成令牌时设置令牌的ttl:
const token = jwt.sign({ id: idDB }, "secret", { expiresIn: '24h' });
或您想要的任何ttl,字符串“ secret”是指与服务器匹配的秘密。
答案 1 :(得分:1)
这是被问到的,只是在这里答复是否可以帮助来这里搜索的人-可以在
中找到express-jwt的好例子https://hptechblogs.com/using-json-web-token-for-authentication/
并且我还尝试了一些类似的实现,该实现可以在-
中找到https://github.com/Abhay-Joshi-Git/jwt-node-react/blob/master/server/index.js