next.js在客户端中导入服务器端脚本是否安全?

时间:2020-07-31 22:02:11

标签: security next.js

在next.js中,我们可以使用

getStaticProps(静态生成):在构建时获取数据。

getStaticPaths(静态生成):指定动态路由以基于数据预渲染。

getServerSideProps(服务器端渲染):在每个请求上获取数据。

运行服务器端代码,但要执行此操作,例如,我需要在该脚本中导入服务器端模块,例如,我想导入身份验证模块,以检查getserversideprops中的用户是否真实。 (或数据库模式,例如猫鼬)

由于我无法导入函数,因此我必须在文件顶部导入,这意味着任何人都可以看到该导入,并查看我如何验证用户的身份.....

示例:

import a from 'auth"  

getserversideprops(){

if(a(req) ==true) ... 

}

1 个答案:

答案 0 :(得分:0)

getServerSideProps 将仅在服务器上运行,并且此代码不会与客户端或最终生成的页面捆绑在一起。由于您永远不应该将服务器端代码发送到客户端,Next.js 已经处理了它。

这是如何在服务器上进行身份验证的示例。

import auth0 from "auth0ConfigPath"
export const getServerSideProps = ({ req, res }) => {
  const session = await auth0.getSession(req); 
  if (!session || session.user) {
    res.writeHead(302, {
      Location: "/api/v1/login",
    });
    res.end();
    return { props: {} };
  }
  return {
    props:{user:session.user}
  }
};