Node.js 中的令牌端点
本文介绍了一个简单的 令牌端点 示例,用于在 Node.js 中创建 JSON Web Tokens (JWT)。CKEditor 云服务使用这些令牌来验证用户身份。
# 依赖项
两个示例都使用 jsonwebtoken 库来创建令牌,并使用 express 来创建 HTTP 端点。
npm install express jsonwebtoken
# 示例
在创建与 协作 集成的令牌端点时,令牌有效负载应包含环境 ID 和用户数据。
# 实时协作功能
const express = require( 'express' );
const jwt = require( 'jsonwebtoken' );
const accessKey = 'w1lnWEN63FPKxBNmxHN7WpfW2IoYVYca5moqIUKfWesL1Ykwv34iR5xwfWLy';
const environmentId = 'LJRQ1bju55p6a47RwadH';
const app = express();
app.use( ( req, res, next ) => {
res.setHeader( 'Access-Control-Allow-Origin', '*' );
res.setHeader( 'Access-Control-Allow-Methods', 'GET' );
next();
} );
app.get( '/', ( req, res ) => {
const payload = {
aud: environmentId,
sub: 'user-123',
user: {
email: 'joe.doe@example.com',
name: 'Joe Doe'
},
auth: {
'collaboration': {
'*': {
'role': 'writer'
}
}
}
};
const result = jwt.sign( payload, accessKey, { algorithm: 'HS256', expiresIn: '24h' } );
res.send( result );
} );
app.listen( 8080, () => console.log( 'Listening on port 8080' ) );
accessKey
和 environmentId
应替换为 CKEditor 生态系统客户仪表板 为 SaaS 提供的密钥,或 管理面板 为本地部署应用程序提供的密钥。用户数据可以从会话或数据库中获取。您无需添加 iat
,因为 jwt.sign()
会自动添加它。
然后,您应该将令牌传递给客户端,例如通过发送纯文本字符串,或通过渲染包含此令牌的页面。如果用户未经身份验证,则令牌端点应返回错误或重定向到登录页面。此外,您应确保令牌通过加密通道发送。
# Easy Image、导出为 PDF 以及导入和导出为 Word
Easy Image 和导出为 Word/PDF 功能的令牌端点不需要添加用户数据。因此,您可以在令牌有效负载中跳过 user
和 auth
属性。
# 本地部署中的导出为 PDF 以及导入和导出为 Word
用于本地部署的 PDF 转换器和 DOCX 转换器的令牌不需要任何其他声明,因此您可以使用空有效负载创建令牌。
在此实现中,accessKey
已被替换为 SECRET_KEY
- 在 导入和导出为 Word/导出为 PDF 本地部署实例安装期间设置的变量。
const express = require( 'express' );
const jwt = require( 'jsonwebtoken' );
const SECRET_KEY = 'w1lnWEN63FPKxBNmxHN7WpfW2IoYVYca5moqIUKfWesL1Ykwv34iR5xwfWLy';
const app = express();
app.use( ( req, res, next ) => {
res.setHeader( 'Access-Control-Allow-Origin', '*' );
res.setHeader( 'Access-Control-Allow-Methods', 'GET' );
next();
} );
app.get( '/', ( req, res ) => {
const result = jwt.sign( {}, SECRET_KEY, { algorithm: 'HS256' } );
res.send( result );
} );
app.listen( 8080, () => console.log( 'Listening on port 8080' ) );
如果您创建自己的令牌端点,请不要忘记在发送令牌之前验证用户身份。您可以使用 Passport 来执行此操作。
# 用法
通过运行以下命令启动服务器
node server
现在,您可以使用简单的请求获取令牌
https://127.0.0.1:8080/
# 示例响应
结果应为纯文本格式。
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJMSlJRMWJqdTU1cDZhNDdSd2FkSCIsImlhdCI6MTY0OTIyOTQyMiwic3ViIjoidXNlci0xMjMiLCJ1c2VyIjp7ImVtYWlsIjoiam9lLmRvZUBleGFtcGxlLmNvbSIsIm5hbWUiOiJKb2UgRG9lIn0sImF1dGgiOnsiY29sbGFib3JhdGlvbiI6eyIqIjp7InJvbGUiOiJ3cml0ZXIifX19fQ._V-HXKKHU1E-saZxk4JTvgXdh1I7793nCEK91ubSZHY
# 调试
出于调试目的,可以使用 jwt.io。