将 JWT 与 nodejs 和 express 一起使用

     2023-03-10     308

关键词:

【中文标题】将 JWT 与 nodejs 和 express 一起使用【英文标题】:Using JWT with nodejs and express 【发布时间】:2020-04-30 09:00:29 【问题描述】:

我正在尝试在后端添加 JWT 而不是 express-session。 我不知道如何将它与 nodejs + 路由一起使用。

我试过这个,所以我可以在每条路线上使用它:

const jwt = 'jsonwebtoken'
app.use(jwt())

我知道“jwt 不是函数”。

比我试过这个:

app.use(
  jwt.sign(, 'secret')
);

我知道“app.use() 需要一个中间件函数” 而不是 我想在前端通过时输入用户。

我应该创建 jwtService 文件并将其导入到每个使用 jwt 的路由吗? 还是在每条路线中都需要 jsonwebtoken?

【问题讨论】:

【参考方案1】:

确保你安装了这个包,你需要先导入/需要它。

const jwt =require('jsonwebtoken');

【讨论】:

我做到了,但我的应用程序中有路由,jwt 在其他路由中不起作用。我在其他路由中得到“TypeError:无法读取未定义的属性'符号'”。我应该在使用它的后端的每个文件中都需要jwt吗? ...或者我可以像使用会话一样使用 app.use(jwt)? 是的,你需要在每个需要jwt的文件中直接导入。【参考方案2】:

您实现这些库的方式总是会根据您的项目标准而有所不同。

我将在这里尝试简化一点,以尽可能地简化。

假设你有一个/login 路由。

const express = require('express')
const bodyParser = require('body-parser')
const cookieParser = require('cookie-parser')

const app = express();
app.use(bodyParser.json());
app.use(cookieParser());

app.post('/login', loginHandler); // YOUR route with JWT inside of login funciton.

app.listen(3000);

app.post 的第二个参数将是包含 JWT 处理程序的函数,例如:

const loginHandler = (req, res) => 
  // username and password
  const  username, password  = req.body

  // create new token
  const myJwtToken = jwt.sign( username , 
   jwtKey, 
    algorithm: 'HS256',
    expiresIn: XXSeconds // The expiredIn property can be human readable like '6 months', '1 week', etc.
  );

  console.log('My token is: ', myJwtToken);

  // set token and expiry date
  res.cookie('token', myJwtToken,  maxAge: XXSeconds * 1000 );
  res.end();

有用的链接:

jsonwebtoken 示例 示例实现 I Node.js with JWT - DEVTO 示例实现 II - FreeCodeCamp

【讨论】:

使用 angular 和 express-jwt 实现刷新令牌

】使用angular和express-jwt实现刷新令牌【英文标题】:implementingrefresh-tokenswithangularandexpress-jwt【发布时间】:2014-12-2204:44:54【问题描述】:我想使用angular、nodejs和express-jwt实现带有jsonweb令牌的滑动过期概念。我对如何做到这一点... 查看详情

在 Rest API 中使用 Facebook 在 Express 和 NodeJS 中维护 JWT 的密钥和访问令牌

】在RestAPI中使用Facebook在Express和NodeJS中维护JWT的密钥和访问令牌【英文标题】:MaintainingSecretkeyandAccessTokenforJWTinExpressandNodeJSwithFacebookinRestAPI【发布时间】:2016-06-0811:52:31【问题描述】:我有两个应用程序:服务器(RESTAPI服务器... 查看详情

将 Mysql 与 Nodejs 和 Express 一起使用 (node-mysql)

】将Mysql与Nodejs和Express一起使用(node-mysql)【英文标题】:UsingMysqlwithNodejsandExpress(node-mysql)【发布时间】:2011-08-1804:59:24【问题描述】:我是node和express的新手,我有一个关于使用mysql。我有一个发布到“/login”的登录表单。我正... 查看详情

将 AngularJS html5mode 与 nodeJS 和 Express 一起使用

】将AngularJShtml5mode与nodeJS和Express一起使用【英文标题】:usingAngularJShtml5modewithnodeJSandExpress【发布时间】:2013-07-2123:21:57【问题描述】:我正在使用带有Express的nodeJS服务器来为我的AngularJS应用程序提供服务。当我使用angularJS默认... 查看详情

JWT nodejs / express - 无效签名

】JWTnodejs/express-无效签名【英文标题】:JWTnodejs/express-Invalidsignature【发布时间】:2019-08-0408:31:59【问题描述】:我在使用Jwt时遇到问题,尤其是“无效签名”错误。我在用户登录后生成一个令牌(jsonwebtoken)。userSchema.methods.gene... 查看详情

express-jwt-authz 和打字稿

】express-jwt-authz和打字稿【英文标题】:express-jwt-authzandtypescript【发布时间】:2020-03-0619:56:09【问题描述】:我是所有这些nodejs、typescript、auth0的新手。当我尝试在一个示例应用中使用express-jwt-authz时出现此错误:src/server.ts:4:22-... 查看详情

当用户在nodeJS / Express和Angular中空闲一段时间(基于令牌的授权)时,我如何使我的JWT令牌过期

】当用户在nodeJS/Express和Angular中空闲一段时间(基于令牌的授权)时,我如何使我的JWT令牌过期【英文标题】:HowcaniexpiremyJWTtoken,whenuserisidleforsometime(Tokenbasedauthorization)innodeJS/ExpressandAngular【发布时间】:2015-08-2309:42:09【问题描... 查看详情

如何将数据从 express 中间件直接传递回客户端 JWT 和 Express 中间件

】如何将数据从express中间件直接传递回客户端JWT和Express中间件【英文标题】:HowtoPassdatafromexpressmiddlewaredirectlybacktoclientJWTandExpressmiddleware【发布时间】:2021-09-0612:37:03【问题描述】:我目前被困在尝试使用express中间件、react和JW... 查看详情

Express (NodeJS) - 代理应用程序的身份验证

】Express(NodeJS)-代理应用程序的身份验证【英文标题】:Express(NodeJS)-authenticationforproxyapp【发布时间】:2020-12-2903:15:18【问题描述】:我有两台服务器:服务器A-Express/FeathersJS-可公开访问,通过jwt进行身份验证服务器X-Django应用程... 查看详情

Nodejs Express 用于 Web 应用程序 JWT,带有数据库或会话以验证用户身份

】NodejsExpress用于Web应用程序JWT,带有数据库或会话以验证用户身份【英文标题】:NodejsExpressforwebaplicationJWTwithdatabaseorsessionstoauthenticateusers【发布时间】:2019-06-2400:15:00【问题描述】:我正在开发一个带有Express服务器的NodeJ,但... 查看详情

无法使用 Express 和 Angular 将 JWT 存储在 Cookie 中

】无法使用Express和Angular将JWT存储在Cookie中【英文标题】:Can\'tstoreJWTinCookiewithExpress&Angular【发布时间】:2020-11-2218:56:03【问题描述】:过去几天我一直在拔头发。无论我在Google上搜索多少次都找不到答案,所以我作为最后的... 查看详情

使用 GraphQL 和 jwt-express 绕过 JWT

】使用GraphQL和jwt-express绕过JWT【英文标题】:BypassJWTwithGraphQLandjwt-express【发布时间】:2018-06-2505:49:45【问题描述】:对于我的后端,我使用Node.js、Express和GraphQL。我已经使用jwt实现了身份验证,如果没有用户登录,它将保护我... 查看详情

NodeJs Express passport-jwt 从令牌中获取错误的用户

】NodeJsExpresspassport-jwt从令牌中获取错误的用户【英文标题】:NodeJsExpresspassport-jwtgettingwronguserfromtoken【发布时间】:2021-05-1403:44:48【问题描述】:我在节点服务器上设置了一个authapi,使用passportjs作为我的中间件,使用passport-jwt... 查看详情

如何查看存储在 JWT 中的数据?使用 auth0 和 express-jwt

】如何查看存储在JWT中的数据?使用auth0和express-jwt【英文标题】:HowdoIviewthedatastoredinaJWT?Usingauth0andexpress-jwt【发布时间】:2018-06-2007:02:05【问题描述】:现在我相信我已经正确设置了大多数东西。Auth0将jwt保存到客户端,然后客... 查看详情

如何安全地保存从 auth0 登录收到的 JWT 令牌(nodejs express)

】如何安全地保存从auth0登录收到的JWT令牌(nodejsexpress)【英文标题】:HowtosaveJWTtokenrecievedfromauth0loginsecurely(nodejsexpress)【发布时间】:2020-02-2022:46:27【问题描述】:我是Auth0的新手,并试图在我的常规快速Web应用程序中实现它... 查看详情

与黑名单撤销功能一起使用时,Express-jwt 未设置 req.user

】与黑名单撤销功能一起使用时,Express-jwt未设置req.user【英文标题】:Express-jwtnotsettingreq.userwhenusedwithblacklistrevokefunction【发布时间】:2018-10-1522:49:06【问题描述】:我尝试了使用express-jwt的用户身份验证RESTAPI和使用express-jwt-blac... 查看详情

使用 Nodejs、Express、Mongoose 和 React 将图像上传到 MongoDB

】使用Nodejs、Express、Mongoose和React将图像上传到MongoDB【英文标题】:UploadanimagetoMongoDBusingNodejs,Express,MongooseandReact【发布时间】:2020-06-2813:02:11【问题描述】:我正在开发一个简单的网络应用程序来练习我新开发的网络开发技能... 查看详情

存储 JWT 服务器端 express.js

】存储JWT服务器端express.js【英文标题】:StoringJWTserversideexpress.js【发布时间】:2019-08-2508:45:36【问题描述】:我们目前的情况:我们有一个使用express.js构建的内部Web应用程序来存储和分析dna。我们还有一个3rd方应用程序,用于... 查看详情