Middleware

zhangyuchun edited this page Nov 27, 2018 · 3 revisions

中间件Middleware

  • 简介

HTTP 中间件为过滤访问你的应用的 HTTP 请求提供了一个方便的机制。

  • 定义中间件

所有的中间件都要集成IMiddleware 并实现name和onProcess方法。假如只允许客户端IP=="10.1.11.31"才能访问,其他的都禁止;如下所示:

import hunt;

///ip filter
class IpFilterMiddleware : IMiddleware{

	override string name() {
		return IpFilterMiddleware.stringof;
	}
        //返回Response对象继续执行以后就不会访问到 Action 方法了,直接执行返回的 response 对象并且终止后面一切操作,对用户的请求进行拦截
	override Response onProcess(Request req,Response res) {
		if(req.clientIp == "10.1.11.31")
		{
			res.setHttpError(403);
			return res;
		}
		return null;
	}
}
  • 应用中间件

  • 注册全局分组中间件

在每一次调用该组的的action的时候都会执行一遍,注册方法如下。

import hunt.framework;   
void main()
{
    //default admin api
    app().addGroupMiddleware("default" , new IpFilterMiddleware());
}
  • 注册controller中间件

注册到controller的中间件,在每一次调用内部action的时候都会执行一遍,注册方法如下。

class UserController : Controller
{
	///must be here
	mixin MakeController;

	this()
	{
		// Constructor code
		this.addMiddleware(new UserMiddleware());
		this.addMiddleware(new CheckIdMiddleware());
	}
}
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.