中间件足以保护api路由和app吗?

问题描述 投票:0回答:1

您好,我只是想知道中间件是否足以保护应用程序。例如,如果我有 api 路由和服务器操作来获取/添加数据库中的数据,并且只有 /dashbord 路由调用这些元素。我需要在获取数据或创建数据之前添加会话检查。我指定路线/仪表板受中间件保护

为了更好地解释,例如我有 3 条路。一台用于连接,一台用于家庭,一台用于仪表板。 /dashbord 受中间件保护(只有登录用户才能访问)。在我的仪表板路线中,我调用路线 api,例如,我可以使用表单(服务器操作)创建一些内容。在调用 api 之前我是否需要仔细检查会话是否存在,或者中间件是否会保护它?

next 14
next-auth 5

谢谢你

security next.js routes middleware
1个回答
0
投票

有两种方法可以处理这个问题。

1-您可以设置中间件来检查会话,如果会话不存在并且用户尝试访问受保护的页面,您可以将用户重定向到登录页面。

2- 检查每页的会话。您可以使用 Next-Auth 提供的 auth() 函数来检查每个页面上的用户是否通过身份验证。

例如:

export async function ServerComponent(){
  const session = await auth();

  if (!session) {
    return <div>
     You are not authenticated. 
     <a href="/signin">Login to continue</a>
     </div>
  }

  return <div>Dashboard</div>
}

您可以查看full-stack-kit.dev,它是一个使用 Next-Auth 的全栈 Next.js 模板,它具有预构建的功能,如身份验证、授权、管理面板、HTML 电子邮件等...一个很棒的代码库学习

© www.soinside.com 2019 - 2024. All rights reserved.