从Next-Auth会话回调中调用数据库信息是否安全

问题描述 投票:0回答:1
 callbacks: {
    async session({ session, token, user }) {
      // Send properties to the client, like an access_token and user id from a provider.
     const getUserEmail = session.user.email;
      const userData = await User.findOne({ email: getUserEmail }).select('-password');
      session.user = userData
      return session
    }

我有来自 Next-Auth CredentialsProvider 提供商的代码,这种方法可以安全应用吗?因为会话信息只包含电子邮件而没有其他内容。我应该获取所有 mongodb 信息来使用用户个人资料、姓名、图像等。你说呢?

mongodb session next.js session-cookies next-auth
1个回答
-3
投票

在安全方面,最好自己编写代码。使用其他库可能会导致安全问题。

创建一个具有安全身份验证的库非常简单。您只需与

JWT
合作并拥有安全的
JWT-SECRET-KEY
。仅此而已!

我编写了有用的库来在 nextjs 中进行安全身份验证:

  1. 使用签名和解码 JWT:jsonwebtoken
  2. 在客户端中解码会话(JWT)而不使用密钥。这将帮助您在客户端中安全解码。因为你没有传递密钥。您可以仅使用此选项来处理一些简单的事情,例如配置文件名称等。 jwt 解码
  3. 要确保 Linux 中的安全
    JWT-SECRET-KEY
    ,请在终端中使用以下代码:

openssl rand -base64 60

  1. 要将令牌保存为 cookie,请使用这些库。我使用了很多库,但它们无法正常工作:(推荐)-> cookies-next,如果你不喜欢它,请使用 nookies
  2. (可选):如果您想将 JWT 会话保存在数据库中(如果您的密钥是安全的,则不需要),您可以使用此 ORM:Prisma
© www.soinside.com 2019 - 2024. All rights reserved.