首页 > 解决方案 > 验证 const String 加上任何变量文本

问题描述

我在 nodejs 中使用 express 的中间件来验证路由是否不同于'login'或'signin',但我还需要验证它是否不同于激活路由加上我的令牌('/api/activation/+token '),也就是说,我有以下内容:

If(req.path ¡= '/api/login'  && req.path != '/api/signin'){
//execute verification middleware
}else{
//allow access to the route
//exclude verification
}

所以我还需要从验证中排除激活路径和我的令牌。它的工作方式如下:

//(assuming eyJajau is my token)
If(req.path ¡= '/api/login'  && req.path != '/api/signin' && req.path != '/api/activate/eyJajau'){
//execute middleware
} else{
//allow access to the route
}

但问题是令牌每次都会更改,所以我需要在我的“if”语句中验证字符串是否与我的路径以及任何单词不同,它会是这样的:

/api/activation/  +  any word and number

换句话说,每个包含 '/api/active/' 的 Sting 以及应该进入“élse”语句的任何内容我认为它可能是正则表达式,但我不知道如何。

所以我需要验证 req.path 与激活路径和任何 Sting 不同。

标签: javascriptnode.jsregexexpressmiddleware

解决方案


要排除/api/activation/后跟任何字符或数字的请求,您可以使用以下正则表达式/\/api\/activate\/\w+/。我还将反转逻辑,因此您的代码可能类似于:

if (req.path === '/api/login' ||
    req.path === '/api/signin' ||
    /\/api\/activate\/\w+/.test(req.path) {
    // allow access
} else {
    // validate/verificate request
}

推荐阅读