tkserver 1.7.20 → 1.7.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.js +10 -2
  2. package/mongo.js +10 -2
  3. package/package.json +2 -2
package/index.js CHANGED
@@ -83,6 +83,7 @@ connectToDatabase()
83
83
 
84
84
  module.exports = async (request, response) => {
85
85
  let accessToken
86
+ let hasClientToken = false
86
87
  const event = request.body || {}
87
88
  logger.log('请求 IP:', getIp(request))
88
89
  logger.log('请求函数:', event.event)
@@ -90,6 +91,8 @@ module.exports = async (request, response) => {
90
91
  let res = {}
91
92
  try {
92
93
  protect(request)
94
+ // 判断客户端是否自带 accessToken,须在 anonymousSignIn 回填身份之前
95
+ hasClientToken = !!(request.body && request.body.accessToken)
93
96
  accessToken = anonymousSignIn(request)
94
97
  await readConfig()
95
98
  allowCors(request, response)
@@ -187,7 +190,9 @@ module.exports = async (request, response) => {
187
190
  res.code = RES_CODE.FAIL
188
191
  res.message = e.message
189
192
  }
190
- if (!res.code && !request.body.accessToken) {
193
+ // 客户端未携带 accessToken 时,将本次绑定的身份令牌随响应返回,
194
+ // 客户端会持久化并在后续请求中携带,从而获得稳定的匿名身份
195
+ if (!res.code && !hasClientToken) {
191
196
  res.accessToken = accessToken
192
197
  }
193
198
  logger.log('请求返回:', res)
@@ -233,7 +238,10 @@ function anonymousSignIn (request) {
233
238
  if (request.body.accessToken) {
234
239
  return request.body.accessToken
235
240
  } else {
236
- return uuidv4().replace(/-/g, '')
241
+ // 为匿名访客签发固定身份令牌,写回请求体供本次请求的
242
+ // 评论存储(uid)与归属校验使用,避免出现 undefined 身份
243
+ request.body.accessToken = uuidv4().replace(/-/g, '')
244
+ return request.body.accessToken
237
245
  }
238
246
  }
239
247
  }
package/mongo.js CHANGED
@@ -78,6 +78,7 @@ let requestTimesTimer = null
78
78
 
79
79
  module.exports = async (request, response) => {
80
80
  let accessToken
81
+ let hasClientToken = false
81
82
  const event = request.body || {}
82
83
  logger.log('请求 IP:', getIp(request))
83
84
  logger.log('请求函数:', event.event)
@@ -85,6 +86,8 @@ module.exports = async (request, response) => {
85
86
  let res = {}
86
87
  try {
87
88
  protect(request)
89
+ // 判断客户端是否自带 accessToken,须在 anonymousSignIn 回填身份之前
90
+ hasClientToken = !!(request.body && request.body.accessToken)
88
91
  accessToken = anonymousSignIn(request)
89
92
  await connectToDatabase(process.env.MONGODB_URI || process.env.MONGO_URL)
90
93
  await readConfig()
@@ -180,7 +183,9 @@ module.exports = async (request, response) => {
180
183
  res.code = RES_CODE.FAIL
181
184
  res.message = e.message
182
185
  }
183
- if (!res.code && !request.body.accessToken) {
186
+ // 客户端未携带 accessToken 时,将本次绑定的身份令牌随响应返回,
187
+ // 客户端会持久化并在后续请求中携带,从而获得稳定的匿名身份
188
+ if (!res.code && !hasClientToken) {
184
189
  res.accessToken = accessToken
185
190
  }
186
191
  logger.log('请求返回:', res)
@@ -226,7 +231,10 @@ function anonymousSignIn (request) {
226
231
  if (request.body.accessToken) {
227
232
  return request.body.accessToken
228
233
  } else {
229
- return uuidv4().replace(/-/g, '')
234
+ // 为匿名访客签发固定身份令牌,写回请求体供本次请求的
235
+ // 评论存储(uid)与归属校验使用,避免出现 undefined 身份
236
+ request.body.accessToken = uuidv4().replace(/-/g, '')
237
+ return request.body.accessToken
230
238
  }
231
239
  }
232
240
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tkserver",
3
- "version": "1.7.20",
3
+ "version": "1.7.22",
4
4
  "description": "A simple comment system.",
5
5
  "keywords": [
6
6
  "twikoo",
@@ -31,7 +31,7 @@
31
31
  "get-user-ip": "^1.0.1",
32
32
  "lokijs": "^1.5.12",
33
33
  "mongodb": "^6.3.0",
34
- "twikoo-func": "1.7.20",
34
+ "twikoo-func": "1.7.22",
35
35
  "uuid": "^8.3.2"
36
36
  }
37
37
  }