Ale*_*hek 5 node.js express jwt typescript express-jwt
我正在尝试实现一个通过 jwt 令牌进行身份验证的 Express API,并且我正在使用 express-jwt 中间件来验证对方法的访问:
import express from 'express'
import jwt from 'express-jwt'
const app = express()
app.get('/protected', jwt({ secret: 'jwtSecret', algorithms: ['HS256'] }), prot)
const prot = (
req: express.Request,
res: express.Response,
_next: express.NextFunction
): void => {
res.json({
msg: req.user,
})
}
app.listen(3000)
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
Property 'user' does not exist on type 'Request<ParamsDictionary, any, any, ParsedQs>'.ts(2339)
我尝试过附加req: express.Request & { user: unknown }
,但该功能不再适合express。
有什么想法我可以在这里做什么。如果情况变得更糟,我可以告诉 TypeScript 以某种方式闭嘴吗,因为我知道该字段将在那里(即使我知道这不是 TypeScript 的重点)
user
不是req
对象的现有属性。req
您可以通过在项目上创建文件来为对象进行自己的类型.d.ts
,例如,创建一个express.d.ts
文件,它将包含:
declare namespace Express {
export interface Request {
user: SomeType
}
}
Run Code Online (Sandbox Code Playgroud)
演示: https: //repl.it/repls/OldlaceWhoppingComputationalscience
尝试删除它express.d.ts
,错误将再次出现。
归档时间: |
|
查看次数: |
3734 次 |
最近记录: |