Moralis 當(dāng)前用戶

2022-05-09 15:09 更新

如果用戶每次打開您的應(yīng)用程序時(shí)都必須登錄,那將會(huì)很麻煩。 您可以通過使用緩存的當(dāng)前 ?Moralis.User? 對(duì)象來避免這種情況。

請(qǐng)注意,默認(rèn)情況下,此功能在 Node.js 環(huán)境(例如 React Native)中被禁用,以阻止在服務(wù)器端配置中使用有狀態(tài)。
要在此特定用例中繞過此行為,請(qǐng)?jiān)谑褂萌魏闻c緩存用戶相關(guān)的功能之前調(diào)用一次 ?Moralis.User.enableUnsafeCurrentUser()?。

管理當(dāng)前用戶

每當(dāng)您使用任何注冊(cè)或登錄方法時(shí),用戶都會(huì)緩存在 ?localStorage ?或您通過 ?Moralis.setAsyncStorage? 方法配置的任何存儲(chǔ)中。 您可以將此緩存視為會(huì)話,并自動(dòng)假定用戶已登錄:

const currentUser = Moralis.User.current();
if (currentUser) {
    // do stuff with the user
} else {
    // show the signup or login page
}

當(dāng)使用帶有異步存儲(chǔ)系統(tǒng)的平臺(tái)時(shí),您應(yīng)該調(diào)用 ?currentAsync()?。

Moralis.User.currentAsync().then(function(user) {
    // do stuff with your user
});

您可以通過注銷來清除當(dāng)前用戶:

Moralis.User.logOut().then(() => {
  const currentUser = Moralis.User.current();  // this will now be null
});

設(shè)置當(dāng)前用戶

如果您創(chuàng)建了自己的身份驗(yàn)證例程,或者以其他方式在服務(wù)器端以用戶身份登錄,您現(xiàn)在可以將會(huì)話令牌傳遞給客戶端并使用 ?become ?方法。 此方法將在設(shè)置當(dāng)前用戶之前確保會(huì)話令牌有效。

Moralis.User.become("session-token-here").then(function (user) {
  // The current user is now set to user.
}, function (error) {
  // The token could not be validated.
});

用戶對(duì)象的安全性

默認(rèn)情況下,?Moralis.User? 類是受保護(hù)的。 存儲(chǔ)在 ?aMoralis.User? 中的數(shù)據(jù)只能由該用戶讀取或修改。

通過使用 ?useMasterKey ?選項(xiàng),可以使用云函數(shù)繞過此限制。

具體來說,您無法調(diào)用任何保存或刪除方法,除非 ?Moralis.User? 是使用經(jīng)過身份驗(yàn)證的方法(如 ?logIn ?或 ?signUp?)獲得的。 這確保只有用戶可以更改他們自己的數(shù)據(jù)。

以下說明了此安全策略:

const user = await Moralis.User.logIn("my_username", "my_password");
user.set("username", "my_new_username");
await user.save();
// This succeeds, since the user was authenticated on the device

// Get the user from a non-authenticated method
const query = new Moralis.Query(Moralis.User);
const userAgain = await query.get(user.objectId);
userAgain.set("username", "another_username");
await userAgain.save().catch(error => {
  // This will error, since the Moralis.User is not authenticated
});

從 ?Moralis.User.current()? 獲得的 ?Moralis.User? 將始終被驗(yàn)證。

如果您需要檢查 ?Moralis.User? 是否經(jīng)過身份驗(yàn)證,您可以調(diào)用 ?authenticated方法。 您不需要檢查通過 ?Moralis.User? 對(duì)象通過身份驗(yàn)證方法獲得的身份驗(yàn)證。

加密當(dāng)前用戶

您可能經(jīng)常需要更加小心存儲(chǔ)在瀏覽器中的用戶信息,如果是這種情況,您可以加密當(dāng)前用戶對(duì)象:

Moralis.enableEncryptedUser();
Moralis.secret = 'my Secrey Key';
  • 注意:如果沒有設(shè)置 ?Moralis.secret?,此功能將不起作用。
  • 另外,請(qǐng)注意,這僅適用于瀏覽器。

現(xiàn)在本地存儲(chǔ)中的記錄看起來像一個(gè)隨機(jī)字符串,只能使用 ?Moralis.User.current()? 讀取。 您可以使用 ?Moralis.isEncryptedUserEnabled()? 函數(shù)檢查此功能是否啟用。


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

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)