Мне нужно закодировать идентификатор моего экземпляра faunadb, потому что я использую его в URL-адресе этого типа / mission / (id number) / team
Я создаю экземпляр с этим:
/* 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)
})
})
}
Я называю эту лямбду с функцией в сервисе:
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)
снова с этой лямбдой службой:
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)
})
})
}
На самом деле это небезопасно, потому что обработка URL с идентификатором номера позволяет получить доступ ко всем моим миссиям.Я хочу закодировать в base64 этот идентификатор, но я не знаю, как это сделать, я начинаю с dev, и я подумал, что сначала зашифровать id в сервисе и расшифровать его в сервисе, но кто-то сказал, что фронт не защищен, затем я хочуиспользовать base64 в спину.Спасибо за совет!