十、NextAuth的 getServerSideProps

简介

  • 这个实际上是一个服务端调用的方法,这个方法的返回值会回填到页面的 Props 参数中
  • 举例:有一个页面 pages/user.tsx
import { getSession, signOut } from "next-auth/react";
import {GetServerSideProps} from "next";
import {Session} from "next-auth";

// gets a prop from getServerSideProps
type MyPara = {
  user: any,
  domain: string,
}
function User(data: MyPara) {
  return (
    <div>
      <h4>User session: {data.domain}</h4>
      <pre>{JSON.stringify(data.user, null, 2)}</pre>
      <button onClick={() => signOut({ callbackUrl: "/signin" })}>Sign out</button>
    </div>
  );
}

export default User;

export const getServerSideProps: GetServerSideProps<{user: any}> = async (context) => {
  const session = await getSession(context);

  // redirect if not authenticated
  if (!session) {
    return {
      redirect: {
        destination: "/signin",
        permanent: false,
      },
    };
  }

  return {
    props: { user: session.user, domain: 'cancanyou.com' },
  };
}
  • 这里面 getServerSideProps 的返回值 props 段落会回传给 User(data) ,可以看到最终的页面输出:


    image.png

结束

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • [toc] 1 工作流规范 1.1 git规范 1.1.1 分支管理规范 git版本管理中主要有以下几种类型的分支...
    Thomas赵骐阅读 384评论 0 0
  • 2019.3.38 比较两个文件 英文 detect: 检测2019.3.27 如何找到第一个bug出现的comm...
    饶家俊阅读 2,635评论 0 1
  • Next.js 的背景 开发团队是 zeit zeit 团队水平如何。后改名为 Vercel 简言之,一个高中开始...
    littleyu阅读 1,849评论 0 0
  • 接上篇:一起学习Next.js吧(上)[//www.greatytc.com/p/ff0e48a35d5...
    darkTi阅读 802评论 0 2
  • 从数据到界面响应流程用户在界面上操作,发起action,action在reducer中改变store上的数据,或者...
    Lethe35阅读 710评论 0 1