INNER CODE UNIT · Python
access_gate
slive777/OpenAver · web/app.py:408
async def access_gate(request: Request, call_next):
"""
非 loopback 且認證已開啟時的 PIN 閘門。
宣告在 `lan_access_gate`(下方)之前——依 Starlette 疊加語意(後宣告者
最外層先執行,§1.2/§8.2 context7 結論),本 middleware 實際執行在
`lan_access_gate` 放行**之後**(CD-114a-4):`lan_access_gate` 先擋掉
單機模式下的所有非 loopback 流量,本 middleware 只處理「已經被放行
進來」的 LAN 流量要不要認證。
本機判斷一律委派 `_is_loopback_host()`(CD-114a-5,比 `_LOOPBACK_HOSTS`
寬的判斷),不得自行解析位址/比對字串。
"""
client_host = request.client.host if request.client else None
if _is_loopback_host(client_host):
return await call_next(request)
snap = snapshot()