是否可以限制Azure站点的可访问时间段?
限制Azure静态网站仅办公时段可访问的几种实现方案
以下方案按实现难度从低到高排序,可根据实际需求选择:
- 最低改造成本方案:前置WAF/CDN规则拦截
给托管静态网站的Azure存储账户前置配置Azure Front Door或者Azure CDN,直接用服务自带的规则引擎做时间匹配即可:- 配置自定义规则的匹配条件为
请求时间,指定允许访问的时段范围(比如周一至周五9:00~18:00) - 非匹配时段的请求,规则动作直接设置为返回403状态码
全程不需要修改静态站点本身的任何代码,规则生效速度快,是最推荐的生产环境方案。
- 配置自定义规则的匹配条件为
- 零额外成本方案:前端代码本地校验
不需要新增任何Azure服务开销的情况下,可以直接在静态站点的入口JS里加时间判断逻辑,示例代码如下:
注意该方案校验逻辑在客户端执行,存在被技术人员绕过的可能,仅适合安全要求不高的内部使用场景。// 自定义办公时段规则 const allowedRule = { weekdays: [1, 2, 3, 4, 5], // 周日为0,周一至周五对应1-5 startHour: 9, endHour: 18 } const currentTime = new Date(); const currentWeekday = currentTime.getDay(); const currentHour = currentTime.getHours(); const isAllowedTime = allowedRule.weekdays.includes(currentWeekday) && currentHour >= allowedRule.startHour && currentHour < allowedRule.endHour; // 非允许时段直接替换页面内容 if (!isAllowedTime) { document.body.innerHTML = '<h1>当前为非办公时段,站点暂不开放访问</h1>'; } - 高安全灵活方案:服务端代理校验
如果需要服务端强校验又不想用WAF,可以给静态站点配置Azure Functions代理,所有访问请求先经过Function做时间校验,符合条件才返回静态资源,不符合要求直接返回拦截页面,灵活度最高,可以支持更复杂的时段规则。
内容的提问来源于stack exchange,提问作者schoon
相关产品推荐
相关产品推荐

