需要在路由跳转前做权限校验和埋点,App Router 下没有 pages router 时代的页面级拦截,middleware 又只能做粗粒度的事。
摸索出几种方案:
- middleware:全局拦截,适合鉴权。
- layout 里检查:每层 layout 可以 throw
redirect()。 - Server Action / 事件处理里手动校验后跳转。
if (!user) redirect("/login");
综合用:middleware 拦未登录,layout 拦越权,action 拦非法操作。
大家权限拦截都怎么做?