簡體   English   中英

解析node.js中的登錄-登錄成功,但是“沒有當前用戶”

[英]Parse Login in node.js - Login successful but 'There is no current user'

我無法與node.js中的解析數據進行交互。 我能夠成功登錄,但是Parse.User.current()返回null。 運行以下代碼后,我想查詢僅對該用戶具有ACL讀/寫操作的數據。 當前,該查詢返回空值,但是如果我將該數據更改為公共讀/寫,則可以在終端中看到查詢輸出的結果。

這是我的node.js代碼:

Prompt.get([{
name: 'username', 
required: true}, {
name: 'password',
hidden: true}], function (err, result) {
    if (err) {
        console.log('Error: ' + err);
    } else {
        Parse.User.logIn(result.username, result.password, {
        success: function(user) {
            console.log('LOGGED IN');
            console.log(user);
            console.log(Parse.Session.current());
            console.log(Parse.User.current());

            ... (query happens below this)

和我的控制台輸出:

prompt: username:  pablo
prompt: password:  
LOGGED IN
ParseUser { _objCount: 0, className: '_User', id: 'EXyg99egkv' }
ParsePromise {
  _resolved: false,
  _rejected: true,
  _resolvedCallbacks: [],
  _rejectedCallbacks: [],
  _error: 'There is no current user.' }
null

提前致謝。

這不是Parse.User.become()的用例嗎? 從解析文檔中:

如果您已經創建了自己的身份驗證例程,或者以其他方式在服務器端登錄了用戶,則現在可以將會話令牌傳遞給客戶端,並使用begin方法。 此方法將確保在設置當前用戶之前會話令牌有效。

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

我遇到了類似的問題,並找到了這個解釋問題的Parse 博客

同樣在Cloud Code中,返回當前用戶的方法的概念很有意義,就像在網頁上的JavaScript中一樣,這是因為只有一個活動請求和一個用戶。 但是,在諸如node.js之類的上下文中,不能有全局當前用戶,這需要顯式傳遞會話令牌。 1.6版及更高版本的Parse JavaScript SDK已經需要此功能,因此,如果您使用的是該版本,則可以安全使用庫。

您可以在node.js環境中使用用戶憑據執行查詢,如下所示:

query.find({ sessionToken: request.user.getSessionToken() }).then(function(data) {
// do stuff with data
}, function(error) {
// do stuff with error
});

如果您希望在使用令牌之前先對其進行驗證,請按照以下說明進行操作:

一種方法是查詢已知只能由用戶讀取的對象。 您可以擁有一個存儲此類對象的類,並讓每個對象使用ACL來限制對用戶本身的讀取權限。 如果在此類上運行查找查詢,則返回具有給定sessionToken的0個對象,這是無效的。 您可以更進一步,還可以比較用戶對象ID以確保它屬於正確的用戶。

即使使用主密鑰也無法查詢會話令牌。

暫無
暫無

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

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