簡體   English   中英

如何在base64中編碼我的實例ID

[英]How can I encode in base64 my instance ID

我需要對我的faunadb實例的id進行編碼,因為我在這種類型/任務/(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();
    });
  }

然后我在我的頁面的init上加載地址'/ 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,但我不知道如何做到這一點,我開始在dev中我認為首先在服務中加密id並在服務中解密但有人說我前面不安全,那么我想在后面使用base64。 謝謝你的建議 !

這個問題的解決方案絕對不是用base64來混淆id( 它不會保護任何內容 ),而是需要將用戶id與數據庫中的敏感信息相關聯。

然后,您可以讓它們針對您的身份驗證/數據服務進行身份驗證以建立身份。 然后,該服務將僅為它們提供與之關聯的記錄。

這個解決方案的棘手部分是為lambda服務編寫auth協議。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM