【问题标题】:Nodejs express JWT how to strore and send token from web/phone client (jsonwebtoken)Nodejs 表达 JWT 如何从 Web/电话客户端(jsonwebtoken)存储和发送令牌
【发布时间】:2019-06-22 08:08:03
【问题描述】:

我正在使用带有 Express 应用程序的 NodeJs 为浏览器和手机开发 Web。我正在使用 JWT,因为它似乎是标准,并且我读到会话在手机(没有浏览器)中效果不佳。我在后端使用“jsonwebtoken”配置了这段代码:

'use strict';

const jwt = require('jsonwebtoken');
const path = require('path');
const fs = require('fs');
const privateKEY  = fs.readFileSync(path.join(__dirname, 'private.key'), 'utf8');
const publicKEY  = fs.readFileSync(path.join(__dirname, 'public.key'), 'utf8');

module.exports = {

    sign: (payload) => {
        var signOptions = {
            expiresIn: process.env.TOKEN_EXPIRE_TIME,
            algorithm: "RS256"
        };
        return jwt.sign(payload, privateKEY, signOptions);
    },

    verify: (token) => {
        var verifyOptions = {
            expiresIn: process.env.TOKEN_EXPIRE_TIME,
            algorithm: ["RS256"]
        };
        try {
            return jwt.verify(token, publicKEY, verifyOptions);
        } catch (err) {
            return false;
        }
    },

    decode: (token) => {
        return jwt.decode(token, {
            complete: true
        });
    }

};

但是我不知道前端的实现方式是什么。我需要知道如何存储两个设备的令牌(localStorage?sessionStorage?cookie?其他?)以及使链接(html 中的href 标记)从该存储方法发送令牌的好方法。

【问题讨论】:

    标签: node.js express jwt


    【解决方案1】:

    前端 JWT 令牌的存储类型完全取决于您的应用程序要求以及您希望如何处理用户的登录/注销会话。

    看到这个article关于JWT的使用,如果你喜欢就给个掌声

    如果您对此不清楚,那么您可以使用 usr localStorage,因为存储在其中的数据会在浏览器关闭后保持事件 - 如果它不影响您的要求。

    对于从链接发送令牌 - 你可以做两件事 -

    1. 动态创建链接并将令牌作为查询参数添加到您的链接
    2. 或者您可以创建 onClick 事件,该事件从存储中获取令牌并向您的服务器发出请求

    希望对你有帮助。

    【讨论】:

    • 完美,我正在做与你说的类似的事情,但我不知道这是否是个好主意,或者是否有更好的最佳实践。可能 2º 方法对我来说在浏览器上隐藏 url 令牌会更好。不错的文章。非常感谢
    猜你喜欢
    • 2021-01-07
    • 2020-12-21
    • 2018-08-01
    • 2019-10-02
    • 1970-01-01
    • 2020-11-22
    • 1970-01-01
    • 2015-09-20
    • 2016-10-04
    相关资源
    最近更新 更多