如果需要身份验证,请指定每个节点路由

Posted

技术标签:

【中文标题】如果需要身份验证,请指定每个节点路由【英文标题】:Specify per node route if authentication is needed or not 【发布时间】:2017-07-13 23:14:41 【问题描述】:

我正在构建一个节点 Web 服务。这包含多条路线。 其中一些需要身份验证,而另一些则不需要。 我使用 json-web-token 来创建和验证令牌,只要我对以下内容感到满意即可:

router
    // main routes
    .get('/', main.catchAll)
    .post('/register', main.register)
    .post('/authenticate', main.authenticate)
    .use(main.verifyToken)
    .get('/years', main.years)
    // game routes
    .get('/games', game.newestGames)
    .get('/game/title/:id', game.gameName)
    .get('/game/:id', game.gameDetails)
    .get('/genres', genres.genres)

这导致在.use(...) 之后定义的所有路由都需要身份验证。 但是,为了跟踪我的所有路线,我想按类别对它们进行分组,但这意味着我无法像以前那样使用验证。

例如:我不希望.get('/games', game.newestGames) 需要身份验证

有没有办法指定每条路线是否需要验证?

【问题讨论】:

【参考方案1】:

当然,你可以这样做:

app.use('/years', main.varifyToken, main.years)

或者,如果您只想在某些动词上使用:

app.get('/years', main.years)
app.post('/years', main.verifyToken, main.postYears)

您还可以考虑使用路由器对功能和身份验证进行分组。我发现这样做更容易理解我的路线

【讨论】:

以上是关于如果需要身份验证,请指定每个节点路由的主要内容,如果未能解决你的问题,请参考以下文章

AngularJS- 每个路由和控制器中的登录和身份验证

使用私有路由和上下文响应身份验证

处理Camel sftp端点身份验证失败

为每个端点 Spring MVC 指定不同的(基本)身份验证登录

vue路由器的问题

如何防止 ASP.NET 记录身份验证失败?