Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在膝关节炎框架中实现过滤前的过滤? 我使用膝关节炎来实现一个应用程序,我想实现一个前过滤器,就像前面的动作 Ruby on Rails >: class UsersController < ApplicationController before_action :logged_in_user, only: [:edit, :update] # Before filters # Confirms a logged-in user. def logged_in_user unless logged_in? flash[:danger] = "Please log in." redirect_to login_url end end end class UsersController CTX.Stase= {} < /代码>中有一个空对象,这是设置这样的数据的合适位置,因为它不会与任何其他属性发生冲突。code>ctx.state.currentUser={uname:'foo'}。请注意,我的回答是针对koa1(2016年)。_Node.js_Filter_Koa - Fatal编程技术网 中有一个空对象,这是设置这样的数据的合适位置,因为它不会与任何其他属性发生冲突。code>ctx.state.currentUser={uname:'foo'}。请注意,我的回答是针对koa1(2016年)。,node.js,filter,koa,Node.js,Filter,Koa" /> 中有一个空对象,这是设置这样的数据的合适位置,因为它不会与任何其他属性发生冲突。code>ctx.state.currentUser={uname:'foo'}。请注意,我的回答是针对koa1(2016年)。,node.js,filter,koa,Node.js,Filter,Koa" />

Node.js 如何在膝关节炎框架中实现过滤前的过滤? 我使用膝关节炎来实现一个应用程序,我想实现一个前过滤器,就像前面的动作 Ruby on Rails >: class UsersController < ApplicationController before_action :logged_in_user, only: [:edit, :update] # Before filters # Confirms a logged-in user. def logged_in_user unless logged_in? flash[:danger] = "Please log in." redirect_to login_url end end end class UsersController CTX.Stase= {} < /代码>中有一个空对象,这是设置这样的数据的合适位置,因为它不会与任何其他属性发生冲突。code>ctx.state.currentUser={uname:'foo'}。请注意,我的回答是针对koa1(2016年)。

Node.js 如何在膝关节炎框架中实现过滤前的过滤? 我使用膝关节炎来实现一个应用程序,我想实现一个前过滤器,就像前面的动作 Ruby on Rails >: class UsersController < ApplicationController before_action :logged_in_user, only: [:edit, :update] # Before filters # Confirms a logged-in user. def logged_in_user unless logged_in? flash[:danger] = "Please log in." redirect_to login_url end end end class UsersController CTX.Stase= {} < /代码>中有一个空对象,这是设置这样的数据的合适位置,因为它不会与任何其他属性发生冲突。code>ctx.state.currentUser={uname:'foo'}。请注意,我的回答是针对koa1(2016年)。,node.js,filter,koa,Node.js,Filter,Koa,需要指出的一点是,我不想过滤所有API,只想过滤其中的一些,比如update\u userdelete\u user您应该使用中间件 const app = require('koa')(); const router = require('koa-router')(); function * ensureLoggedIn (next) { if (!this.currentUser) { this.redirect('/login') return } // I

需要指出的一点是,我不想过滤所有API,只想过滤其中的一些,比如
update\u user
delete\u user

您应该使用中间件

const app = require('koa')();
const router = require('koa-router')();

function * ensureLoggedIn (next) {
  if (!this.currentUser) {
    this.redirect('/login')
    return 
  }
  // If we get this far, then we know the user is logged in and 
  // we can yield to the downstream routes.
  yield * next
}

router.get('/users', function * () {...})
router.get('/users/:id/edit', ensureLoggedIn, function * () {...})
router.post('/user/:id', ensureLoggedIn, function * () {...})

app.use(router.routes()).listen(3000)
这是最通用的方法。根据您使用的路由库,您可能有其他选项

例如,koa路由器允许您实现特定于路由器的中间件,该中间件仅在请求与路由器匹配时运行

const unrestricted = require('koa-router')();
unrestricted.get('/users', function * () {...})

const loggedIn = require('koa-router')();
loggedIn.use(ensureLoggedIn)
loggedIn.get('/users/:id/edit', function * () {...})
loggedIn.post('/user/:id', function * () {...})

app.use(unrestricted.routes()).use(loggedIn.routes()).listen(3000)
或者,您可以使用
router.param(名称,中间件)
指定仅在具有该URL参数的路由上运行的中间件:

const router = require('koa-router')();

// Only run the given middleware if the URL has the "id" parameter
router.param('id', ensureLoggedIn, loadUser)

router.get('/users', function * () {...})
router.get('/users/:id/edit', function * () {...})  // <-- 
router.post('/user/:id', function * () {...})       // <--

app.use(router.routes()).listen(3000)
const router=require('koa-router')();
//仅当URL具有“id”参数时才运行给定的中间件
router.param('id',ensureLoggedIn,loadUser)
get('/users',function*(){…})

router.get('/users/:id/edit',function*(){…})//如果我必须在路由中使用该泛型函数的输出,或者将其传递给我的视图,我想知道我该怎么做。@Qasim您可以在您的中间件中设置上下文对象的信息(
this
在koa1中,或者在koa2中设置处理程序/中间件的第一个参数)。例如,
ctx.currentUser={uname:'foo'}
。Koa在“代码> CTX.Stase= {} < /代码>中有一个空对象,这是设置这样的数据的合适位置,因为它不会与任何其他属性发生冲突。code>ctx.state.currentUser={uname:'foo'}
。请注意,我的回答是针对koa1(2016年)。