next.js 如何将被禁止的用户重定向到某个页面

cvxl0en2  于 2023-03-29  发布在  其他
关注(0)|答案(1)|浏览(174)

我正在使用NextJs,我试图为在DB/会话上被禁止或阻止的用户提供重定向功能。
我试过这个

redirect.js自定义重定向函数所在。

import { getSession } from "next-auth/react"

export async function userBanned(context, callback){
    const session = await getSession(context)
    if(session){
        if(session.user?.banned === true){
            // Redirect
            return{
                redirect: {
                    destination: '/blocked',
                    permanent: false
                }
            }
        }
    }
    return callback(session)
}

然后我在**_app.js**文件中使用了它。

export async function getServerSideProps(context){
  return userBanned(context, (session) => {
      return{
          props: {
              session,
          }
      }
  })
}

我想做的基本上是当用户加入我的应用程序中的任何页面,他被禁止,然后他必须被重定向到/阻止的路线。
注意:这段代码不工作或给予我任何日志idk为什么,但我的数据库是工作和禁止 prop 设置为真.

lc8prwob

lc8prwob1#

你从来没有在这里调用callback函数:

export async function userBanned(context, callback){
    const session = await getSession(context)
    if(session){
        if(session.user?.banned === true){
            // Redirect
            return{
                redirect: {
                    destination: '/blocked',
                    permanent: false
                }
            }
        }
    }

但是这里不需要实现callback

export async function getServerSideProps(context){
    const session = await getSession({ req: context.req })
    if(session){
        if(session.user?.banned === true){
            // Redirect
            return{
                redirect: {
                    destination: '/blocked',
                    permanent: false
                }
            }
        }

    return{
          props: {
              session,
          }
      }
}

相关问题