You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用next-auth中间件阻止已认证用户访问自定义登录页?

阻止已认证用户访问登录页的NextAuth中间件实现

可以通过NextAuth的中间件实现该需求,只需在withAuth配置中添加authorized回调函数,结合用户认证状态与请求路径进行判断即可。

修改后的middleware.ts代码如下:

import withAuth from 'next-auth/middleware';

export default withAuth({
  pages: {
    signIn: `/login`,
  },
  authorized: ({ req, token }) => {
    // 已认证用户访问/login时拦截
    if (token && req.nextUrl.pathname === '/login') {
      return false;
    }
    // 其余场景遵循默认认证逻辑
    return true;
  },
});

逻辑说明

  • authorized回调会在每次请求时触发,接收req(请求对象)和token(JWT令牌,对应你配置的jwt会话策略)参数。
  • 当token存在(表示用户已完成认证)且请求路径为/login时,返回false,NextAuth会自动拦截该请求并跳转至默认首页(你也可通过pages配置自定义跳转目标)。
  • 其他请求场景返回true,保持原有路由保护逻辑不变。

你的route.ts配置无需修改,维持现有结构即可。

内容的提问来源于stack exchange,提问作者alexortizl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 19:13:08