Moralis 會(huì)話

2022-05-09 15:30 更新

會(huì)話表示用戶(hù)登錄到設(shè)備的實(shí)例。用戶(hù)登錄或注冊(cè)時(shí)會(huì)自動(dòng)創(chuàng)建會(huì)話。當(dāng)用戶(hù)注銷(xiāo)時(shí),它們會(huì)被自動(dòng)刪除。每個(gè)用戶(hù)安裝對(duì)都有一個(gè)不同的 ?Session ?對(duì)象;如果用戶(hù)從他們已經(jīng)登錄的設(shè)備發(fā)出登錄請(qǐng)求,則該用戶(hù)先前用于該安裝的 ?Session ?對(duì)象將被自動(dòng)刪除。 ?Session ?對(duì)象存儲(chǔ)在 Moralis 的 ?Session ?類(lèi)中,您可以在 ?Moralis Dashboard Data Browser? 上查看它們。我們提供了一組 API 來(lái)管理您應(yīng)用中的 ?Session ?對(duì)象。

?Session ?是 Moralis 對(duì)象的子類(lèi),因此您可以像在 Moralis 上操作普通對(duì)象一樣查詢(xún)、更新和刪除會(huì)話。因?yàn)?nbsp;?Moralis Server? 在您登錄或注冊(cè)用戶(hù)時(shí)會(huì)自動(dòng)創(chuàng)建會(huì)話,所以您不應(yīng)手動(dòng)創(chuàng)建 ?Session ?對(duì)象,除非您正在構(gòu)建“?Moralis for IoT?”應(yīng)用程序(例如 ?Arduino ?或 ?Embedded C?)。刪除會(huì)話將使用戶(hù)退出當(dāng)前正在使用此會(huì)話令牌的設(shè)備。

與其他 Moralis 對(duì)象不同,?Session ?類(lèi)沒(méi)有云代碼觸發(fā)器。因此,您不能為 ?Session ?類(lèi)注冊(cè) ?beforeSave ?或 ?afterSave ?處理程序。

會(huì)話屬性

Session 對(duì)象具有以下特殊字段:

  • ?sessionToken?(只讀):用于對(duì) ?Moralis API? 請(qǐng)求進(jìn)行身份驗(yàn)證的字符串令牌。在 ?Session ?查詢(xún)的響應(yīng)中,只有您當(dāng)前的 ?Session ?對(duì)象將包含一個(gè)會(huì)話令牌。
  • ?user?:(只讀)指向此會(huì)話所針對(duì)的用戶(hù)對(duì)象的指針。
  • ?createdWith?(只讀):有關(guān)如何創(chuàng)建此會(huì)話的信息(例如 ?{ "action": "login", "authProvider": "password"}?)。
    • ?action ?可以有這些值:?login?、?signup?、?create ?或 ?upgrade?。創(chuàng)建操作是開(kāi)發(fā)人員通過(guò)保存 ?Session ?對(duì)象手動(dòng)創(chuàng)建會(huì)話。升級(jí)操作是當(dāng)用戶(hù)從舊會(huì)話令牌升級(jí)到可撤銷(xiāo)會(huì)話時(shí)。
    • ?authProvider ?可以有這些值:?password?、?anonymous?、?facebook ?或 ?twitter?。
  • ?expiresAt (readonly)?: 自動(dòng)刪除此 ?Session ?對(duì)象的大約 ?UTC ?日期。您可以在應(yīng)用程序的 ?Moralis Dashboard? 設(shè)置頁(yè)面中配置會(huì)話過(guò)期設(shè)置(1 年不活動(dòng)過(guò)期或無(wú)過(guò)期)。
  • ?installationId?(只能設(shè)置一次):表示會(huì)話登錄的安裝的字符串。對(duì)于 ?Moralis SDK?,該字段將在用戶(hù)登錄或注冊(cè)時(shí)自動(dòng)設(shè)置。
  • 除 ?installationId ?外的所有特殊字段只能由 ?Moralis Server? 自動(dòng)設(shè)置。您可以將自定義字段添加到 ?Session ?對(duì)象,但請(qǐng)記住,任何已登錄的設(shè)備(帶有會(huì)話令牌)都可以讀取屬于同一用戶(hù)的其他會(huì)話

處理無(wú)效會(huì)話令牌錯(cuò)誤

對(duì)于可撤銷(xiāo)會(huì)話,如果從 Moralis 服務(wù)器中刪除了相應(yīng)的會(huì)話對(duì)象,則當(dāng)前會(huì)話令牌可能會(huì)變得無(wú)效。 如果您實(shí)現(xiàn)允許用戶(hù)從其他設(shè)備注銷(xiāo)的會(huì)話管理器 UI,或者如果您通過(guò)云代碼、REST API 或數(shù)據(jù)瀏覽器手動(dòng)刪除會(huì)話,則可能會(huì)發(fā)生這種情況。 由于自動(dòng)過(guò)期(如果在應(yīng)用程序設(shè)置中配置),會(huì)話也可能被刪除。 當(dāng)設(shè)備的會(huì)話令牌不再對(duì)應(yīng)于 Moralis 服務(wù)器上的會(huì)話對(duì)象時(shí),來(lái)自該設(shè)備的所有 API 請(qǐng)求都將失敗,并顯示“?Error 209:invalid session token?”。

要處理此錯(cuò)誤,我們建議編寫(xiě)一個(gè)由所有 Moralis 請(qǐng)求錯(cuò)誤回調(diào)調(diào)用的全局實(shí)用函數(shù)。 然后,您可以在此全局函數(shù)中處理“無(wú)效會(huì)話令牌”錯(cuò)誤。 您應(yīng)該提示用戶(hù)再次登錄,以便他們可以獲得新的會(huì)話令牌。 此代碼可能如下所示:

function handleMoralisError(err) {
  switch (err.code) {
    case Moralis.Error.INVALID_SESSION_TOKEN:
      Moralis.User.logOut();
      // If web browser, render a log in screen
      // If Express.js, redirect the user to the log in route
      break;

    // Other Moralis API errors that you want to explicitly handle
  }
}

// For each API request, call the global error handler
query.find().then(function() {
  // do stuff
}, function(err) {
  handleMoralisError(err);
});

會(huì)話安全

會(huì)話對(duì)象只能由用戶(hù)字段中指定的用戶(hù)訪問(wèn)。 所有 ?Session ?對(duì)象都有一個(gè)只能由該用戶(hù)讀寫(xiě)的 ?ACL?。 您無(wú)法更改此 ?ACL?。 這意味著查詢(xún)會(huì)話將僅返回與當(dāng)前登錄用戶(hù)匹配的對(duì)象。

當(dāng)您通過(guò)用戶(hù)登錄方法登錄用戶(hù)時(shí),Moralis 將自動(dòng)在您的 Moralis 服務(wù)器中創(chuàng)建一個(gè)新的不受限制的 ?Session ?對(duì)象。 注冊(cè)和 Facebook/Twitter 登錄也是如此。

您可以為 ?Session ?類(lèi)配置類(lèi)級(jí)別權(quán)限 (?CLP?),就像 Moralis 上的其他類(lèi)一樣。 ?CLP ?通過(guò) ?Session API? 限制會(huì)話的讀取/寫(xiě)入,但不限制 ?Moralis Server? 在用戶(hù)登錄、注冊(cè)和注銷(xiāo)時(shí)自動(dòng)創(chuàng)建/刪除會(huì)話。 我們建議您禁用應(yīng)用程序不需要的所有 ?CLP?。 以下是會(huì)話 ?CLP ?的一些常見(jiàn)用例:

  • ?Find、Delete? - 用于構(gòu)建 UI 屏幕,允許用戶(hù)在所有設(shè)備上查看他們的活動(dòng)會(huì)話,并在其他設(shè)備上注銷(xiāo)會(huì)話。 如果您的應(yīng)用沒(méi)有此功能,您應(yīng)該禁用這些權(quán)限。
  • ?Create ?- 對(duì)于從手機(jī)應(yīng)用程序?yàn)槠渌O(shè)備提供用戶(hù)會(huì)話的應(yīng)用程序很有用。 在為移動(dòng)和 Web 構(gòu)建應(yīng)用程序時(shí),您應(yīng)該禁用此權(quán)限。 對(duì)于 ?IoT ?應(yīng)用程序,您應(yīng)該檢查您的 ?IoT ?設(shè)備是否確實(shí)需要訪問(wèn)用戶(hù)特定的數(shù)據(jù)。 如果沒(méi)有,那么您的 ?IoT ?設(shè)備不需要用戶(hù)會(huì)話,您應(yīng)該禁用此權(quán)限。
  • ?Get、Update、Add Field?——除非您需要這些操作,否則您應(yīng)該禁用這些權(quán)限。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)