中间件“ strapi :: session”:需要应用程序键。请在config/server.js中设置app.keys(ex:键:[' mykeya',' mykeyb'])

发布于 2025-01-28 23:51:45 字数 1448 浏览 1 评论 0 原文

试图设置Strapi和Cloudinary 我看了两个视频,他们都可以,但是我有一个错误,告诉我为什么?

中间件“ strapi :: session”:需要应用键。请设置 config/server.js中的app.keys(ex:键:['mykeya','mykeyb'])

https://i.sstatic.net/xopkq.png

module.exports = ({ env }) => ({
  // ...
  upload: {
    config: {
      provider: 'cloudinary',
      providerOptions: {
        cloud_name: env('CLOUDINARY_NAME'),
        api_key: env('CLOUDINARY_KEY'),
        api_secret: env('CLOUDINARY_SECRET'),
      },
      actionOptions: {
        upload: {},
        delete: {},
      },
    },
  },
  // ...
});

” alt =

HOST=0.0.0.0
PORT=1337
CLOUDINARY_NAME="my data"
CLOUDINARY_KEY="my data"
CLOUDINARY_SECRET="my data"
JWT_SECRET=my data

=“ https://i.sstatic.net/xopkq.png” <

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  app: {
    keys: env.array('APP_KEYS'),
  },
});

img src =

module.exports = [
  'strapi::errors',
  'strapi::security',
  'strapi::cors',
  'strapi::poweredBy',
  'strapi::logger',
  'strapi::query',
  'strapi::body',
  'strapi::session',
  'strapi::favicon',
  'strapi::public',
];

module.exports = ({ env }) => ({
  auth: {
    secret: env('ADMIN_JWT_SECRET'),
  },
  apiToken: {
    salt: env('API_TOKEN_SALT'),
  },
});

Trying to set up strapi and cloudinary
I watched two videos and they are all OK, but I have an error, tell me why?

Middleware "strapi::session": App keys are required. Please set
app.keys in config/server.js (ex: keys: ['myKeyA', 'myKeyB'])

enter image description here

plugins.js

module.exports = ({ env }) => ({
  // ...
  upload: {
    config: {
      provider: 'cloudinary',
      providerOptions: {
        cloud_name: env('CLOUDINARY_NAME'),
        api_key: env('CLOUDINARY_KEY'),
        api_secret: env('CLOUDINARY_SECRET'),
      },
      actionOptions: {
        upload: {},
        delete: {},
      },
    },
  },
  // ...
});

.env

HOST=0.0.0.0
PORT=1337
CLOUDINARY_NAME="my data"
CLOUDINARY_KEY="my data"
CLOUDINARY_SECRET="my data"
JWT_SECRET=my data

server.js

module.exports = ({ env }) => ({
  host: env('HOST', '0.0.0.0'),
  port: env.int('PORT', 1337),
  app: {
    keys: env.array('APP_KEYS'),
  },
});

middlewares.js

module.exports = [
  'strapi::errors',
  'strapi::security',
  'strapi::cors',
  'strapi::poweredBy',
  'strapi::logger',
  'strapi::query',
  'strapi::body',
  'strapi::session',
  'strapi::favicon',
  'strapi::public',
];

admin.js

module.exports = ({ env }) => ({
  auth: {
    secret: env('ADMIN_JWT_SECRET'),
  },
  apiToken: {
    salt: env('API_TOKEN_SALT'),
  },
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

晨曦慕雪 2025-02-04 23:51:45

看来您没有 app_keys .env 文件中定义(假设您要共享完整文件),以及其他一些ENV变量使用Strapi的内置env实用程序访问。

在您的 .env 中,您应该具有以下值的值,该值应遵循此格式:

APP_KEYS=['key1','key2']

您可以从Strapi的开发文档中阅读有关环境配置的更多信息:

It looks like you don't have APP_KEYS defined in your .env file (assuming you're sharing the full file), as well as some other env variables you're accessing using strapi's built in env utility.

In your .env you should have a value for the following that should follow this format:

APP_KEYS=['key1','key2']

You can read more about environment config from Strapi's development docs:
https://docs.strapi.io/developer-docs/latest/setup-deployment-guides/configurations/optional/environment.html#strapi-s-environment-variables

岁月染过的梦 2025-02-04 23:51:45

我编写了一个快速的Kotlin脚本,以生成Strapi的必要环境变量。 出于安全原因,您应该在本地运行。但是,您当然可以在 .env 文件中。

import java.security.SecureRandom
import java.util.Base64

fun main() {

    val rnd = SecureRandom()

    val appKeys = List(4) {
        val buffer = ByteArray(16)
        rnd.nextBytes(buffer)
        Base64.getEncoder().encodeToString(buffer)
    }

    val buffer = ByteArray(16)
    rnd.nextBytes(buffer)
    var jwtSecret = buffer.joinToString("") { String.format("%02x", it) }
    jwtSecret = jwtSecret.substring(0, 8) + "-" + jwtSecret.substring(8, 12) + "-" + jwtSecret.substring(12, 16) + "-" + jwtSecret.substring(16)

    rnd.nextBytes(buffer)
    val apiTokenSalt = buffer.joinToString("") { String.format("%02x", it) }

    println("APP_KEYS=" + appKeys.joinToString(","))
    println("JWT_SECRET=$jwtSecret")
    println("API_TOKEN_SALT=$apiTokenSalt")
}

I wrote a quick kotlin script to generate the necessary environment variables for Strapi. For security reasons, you should run this locally. But you can of course run it on play.kotlin.org. You can put the output of this script in your .env file.

import java.security.SecureRandom
import java.util.Base64

fun main() {

    val rnd = SecureRandom()

    val appKeys = List(4) {
        val buffer = ByteArray(16)
        rnd.nextBytes(buffer)
        Base64.getEncoder().encodeToString(buffer)
    }

    val buffer = ByteArray(16)
    rnd.nextBytes(buffer)
    var jwtSecret = buffer.joinToString("") { String.format("%02x", it) }
    jwtSecret = jwtSecret.substring(0, 8) + "-" + jwtSecret.substring(8, 12) + "-" + jwtSecret.substring(12, 16) + "-" + jwtSecret.substring(16)

    rnd.nextBytes(buffer)
    val apiTokenSalt = buffer.joinToString("") { String.format("%02x", it) }

    println("APP_KEYS=" + appKeys.joinToString(","))
    println("JWT_SECRET=$jwtSecret")
    println("API_TOKEN_SALT=$apiTokenSalt")
}

厌倦 2025-02-04 23:51:45

要解决问题,请创建 .env 文件,该文件应为 .env.example 的副本。根据您的Strapi版本,您可能需要添加更多的环境变量。然后在终端中使用节点运行 crypto.randombytes(16).toString('Base64')命令,在运行命令后,您将获得一个生成的键,以在 .env < .env <<<> .env << /code>

以下是工作 .env 文件的示例,只需与加密密钥交换。

HOST=0.0.0.0
PORT=1337
APP_KEYS=['generatedKey1', 'generatedKey2']
JWT_SECRET=generatedKey3
API_TOKEN_SALT=generatedKey4
ADMIN_JWT_SECRET=generatedKey5

To resolve the issue create a .env file which should be a copy of .env.example. Depending on your version of Strapi you may need to add more environment variables. Then use Node in the terminal to run crypto.randomBytes(16).toString('base64') commands, after running the command you will get a generated key to use in the .env

Here's an example of a working .env file, just swap generatedKey with your crypto keys.

HOST=0.0.0.0
PORT=1337
APP_KEYS=['generatedKey1', 'generatedKey2']
JWT_SECRET=generatedKey3
API_TOKEN_SALT=generatedKey4
ADMIN_JWT_SECRET=generatedKey5
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文