序、背景
最近某个项目需要做系统平台的访问控制功能。具体说就是需要可以限制只允许指定的IP段访问系统Web页面,非指定的IP/IP段访问只能看到403的错误页。
这个需求在某种情况下倒也挺简单,Tornado的话,在RequestHandler的prepare阶段,检查一下客户端IP地址是否在IP段内,不在的话抛一个HTTPError(403);ASP.net core的话,注册一个AuthorizationFilter做IP检查即可。
问题在于笔者负责的项目是前后端分离的,后端这边只负责接受HTTP API的请求。前端资源直接交由Nginx负责响应。故即便在Web项目里做了访问IP检查也只能对API请求做访问限制。静态资源还是可以被自由访问。
如果需要对Nginx负责的前端资源也设置访问控制,就需要单独做一些设置了。