您好,我只是想知道中间件是否足以保护应用程序。例如,如果我有 api 路由和服务器操作来获取/添加数据库中的数据,并且只有 /dashbord 路由调用这些元素。我需要在获取数据或创建数据之前添加会话检查。我指定路线/仪表板受中间件保护
为了更好地解释,例如我有 3 条路。一台用于连接,一台用于家庭,一台用于仪表板。 /dashbord 受中间件保护(只有登录用户才能访问)。在我的仪表板路线中,我调用路线 api,例如,我可以使用表单(服务器操作)创建一些内容。在调用 api 之前我是否需要仔细检查会话是否存在,或者中间件是否会保护它?
next 14
next-auth 5
谢谢你
有两种方法可以处理这个问题。
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 电子邮件等...一个很棒的代码库学习