我需要对动物群实例的ID进行编码,因为我在此类URL中使用了它 /任务/(身份证号码)/团队
我以此创建实例:
/* code from functions/todos-create.js */
import faunadb from 'faunadb' /* Import faunaDB sdk */
/* configure faunaDB Client with our secret */
const q = faunadb.query
const client = new faunadb.Client({
secret: process.env.FAUNADB_SECRET
})
/* export our lambda function as named "handler" export */
exports.handler = (event, context, callback) => {
/* parse the string body into a useable JS object */
const eventBody = JSON.stringify(event.body)
const data = JSON.parse(eventBody)
const mission = {
data: JSON.parse(data)
}
// {"title":"What I had for breakfast ..","completed":true}
/* construct the fauna query */
return client.query(q.Create(q.Ref("classes/missions"), mission))
.then((response) => {
console.log("success", response)
/* Success! return the response with statusCode 200 */
return callback(null, {
statusCode: 200,
body: JSON.stringify(response)
})
}).catch((error) => {
console.log("error", error)
/* Error! return the error with statusCode 400 */
return callback(null, {
statusCode: 400,
body: JSON.stringify(error)
})
})
}
我将此lambda称为服务中的函数:
createMission(data) {
return fetch('/.netlify/functions/mission-create', {
body: JSON.stringify(data),
method: 'POST'
}).then(response => {
return response.json();
});
}
然后在页面的初始位置加载'/ mission /(id number)/ team':
this._missionService.readById(this.route.snapshot.params.missionId)
再次通过服务使用此lambda:
import faunadb from 'faunadb'
const q = faunadb.query
const client = new faunadb.Client({
secret: process.env.FAUNADB_SECRET
})
exports.handler = (event, context, callback) => {
const id = event.path.match(/([^\/]*)\/*$/)[0];
console.log(`Function 'mission-read' invoked. Read id: ${id}`)
return client.query(q.Get(q.Ref(q.Class("missions"), id)))
.then((response) => {
console.log("success", response)
return callback(null, {
statusCode: 200,
body: JSON.stringify(response)
})
}).catch((error) => {
console.log("error", error)
return callback(null, {
statusCode: 400,
body: JSON.stringify(error)
})
})
}
实际上这是不安全的,因为可以使用带有ID号的URL处理访问我的所有任务。 我想在base64中对该ID进行编码,但我不知道该怎么做,我从开发人员入手,我想首先在服务中加密ID并在服务中对其进行解密,但有人说我的前台并不安全,那么我想在后面使用base64。 感谢您的建议!
答案 0 :(得分:4)
解决此问题的方法肯定是不,以使用base64混淆ID(不会保护),但是您需要将用户ID与敏感数据库中的信息。
然后,您可以让它们针对您的auth / data服务进行身份验证以建立身份。然后,该服务将仅向他们提供与他们相关联的记录。
此解决方案的棘手部分是为您的lambda服务编写身份验证协议。