如何通过角色保护私有路由。也就是说,如果我是用户类型“user”,我可以访问/normal路由,如果我是admin,我可以访问/admin路由。也就是说,多个私有路由具有特定角色,官方文档只显示了单个路由的单个角色的示例。但我想要的是使其多个。
- 中间件.ts*
import { withAuth } from "next-auth/middleware"
export default withAuth(
// `withAuth` augments your `Request` with the user's token.
function middleware(req) {
console.log(req.nextauth.token)
},
{
callbacks: {
authorized: ({ token }) => token?.role === "admin",
},
}
)
export const config = { matcher: ["/admin"] }
字符串
以下是从官方next-auth文档https://next-auth.js.org/configuration/nextjs中提取的代码
我想要的是export const config = { matcher: ['/dashboard'] };
应用于回调类型“user”,但我想根据用户的角色创建更多受保护的路由
我用nextjs 14
1条答案
按热度按时间emeijp431#
让中间件应用于两个路由,并在
authorized
回调中检查访问的是哪一个,然后根据路径解析所需的角色。一个非常简单的设置可能看起来像这样:
字符串