Node.js 如何使用app.method()进行授权
我正在尝试使用express thenNode.js 如何使用app.method()进行授权,node.js,mongodb,express,authorization,saas,Node.js,Mongodb,Express,Authorization,Saas,我正在尝试使用express thennext('route'),但我在文档中没有找到多少关于如何做到这一点的内容。但这并不能解释怎么做 只能在使用app.METHOD()或router.METHOD()函数加载的中间件函数中工作 我不明白他们的意思,因为我以前从未使用过app.METHOD(),而且我也无法找到关于如何正确使用next('route')的文档。这样行吗 app.method('*', (req, res, next) => { if(req.user == null)
next('route')
,但我在文档中没有找到多少关于如何做到这一点的内容。但这并不能解释怎么做
只能在使用app.METHOD()或router.METHOD()函数加载的中间件函数中工作
我不明白他们的意思,因为我以前从未使用过app.METHOD()
,而且我也无法找到关于如何正确使用next('route')
的文档。这样行吗
app.method('*', (req, res, next) => {
if(req.user == null) {
next();
} else {
User.findOne({"_id": req.user.id}, function(err, result) {
if(err){
console.log(err);
} else {
if(stripe.active == false && stripe.trial == false){
res.render('/dashboard/billing');
next('route');
} else {
next();
}
}
});
}
});
这样行吗?我猜我把事情搞砸了。如果我做对了,那么它会找到一个用户,然后检查is\u active
和is\u trial
是否为false,如果是,则跳到下一条路线。我这样做的目的是让用户可以使用站点中没有登录用户的任何部分,然后当有登录用户且两者都为false时,我只让他们转到/仪表板/账单。这是向我建议的一种方式,防止尚未付费的用户访问我的应用程序
我正在测试的路线:
// dashboard
app.get('/dashboard',
setRender('dashboard/index'),
setRedirect({auth: '/login'}),
isAuthenticated,
(req, res, next) => {
},
dashboard.getDefault);
首先,将方法更改为正确的HTTP方法请求。在文档中,它指定.METHOD()表示的内容:
函数,其中METHOD是请求的HTTP方法
中间件函数处理(如GET、PUT或POST)的
小写
换句话说,.METHOD()是.get、.post、.put等的占位符
尝试在你的应用程序中更改此选项:
app.get('*', (req, res, next) => {
if(req.user == null) {
next();
} else {
User.findOne({"_id": req.user.id}, function(err, result) {
if(err){
console.log(err);
} else {
if(stripe.active == false && stripe.trial == false){
res.render('/dashboard/billing');
next('route');
} else {
next();
}
}
});
}
});
看看你能不能从那里解决
更新
在res.render()之后立即调用.next('route')会取消res.render(),因为.next('route')会将请求发送到下一个路由器。我认为它太字面化了。。。该死。剩下的看起来像样吗?我试图让它工作,但我的问题是,当我的页面全部加载时,我不能将用户配置文件中的变量更改为false。好吧,至少我不知道如何手动操作。我想我可以将&
更改为| |
进行测试,但它似乎仍然可以让我进入我不想要的页面。如果stripe.active==false | | stripe.trial==false,是否要将用户发送到下一个路由器?对于测试是,因为这两个都不会是假的,直到14天结束,我不想等那么久。我想如果or起作用,也应该这样。然后我可以在14天内返回到这个问题,当这两个都为假时,以确保它工作,如果没有修复它,那么当我有一个帐户,这将是我需要测试的。你能指定哪些页面你想让用户访问,哪些不?而且“*”会接受任何请求,对吗?我发布了一个小更新。