2017-02-02 9 views
0

Я хочу, чтобы только прошедшие проверку подлинности пользователи модифицировали классы в базе данных. Например:Проверка аутентификации - Parse Cloud

Parse.Cloud.beforeSave(("anything (I don't know how") => { 
    // Something like this 
    if (!verify(request.user)) { 
     response.error("Not authenticated/Token is invalid"); 
     return 
    } 
    // ... 
    response.success(); 
}); 

Есть ли у вас какие-нибудь идеи? Обратите внимание, что это первый раз, когда я использую Parse.

+1

Если вы хотите ограничить доступ для изменения/создания/чтения определенного класса, вы должны иметь возможность использовать CLP. Чтобы установить их, вам, вероятно, понадобится панель инструментов. Но они позволят вам указать, какие роли и пользователи могут выполнить какие-либо действия над каждым классом. – EReid

+0

@EReid Я установил панель синтаксического анализа, но не могу найти, как я могу добавить роли. – Etgar

+0

Это, вероятно, лучше всего подходит для другого вопроса. Но вы можете добавить строку в класс Role. И должен иметь возможность добавлять пользователей в отношение пользователей к этому элементу. Это также можно сделать программно, что я, вероятно, посоветую. Чтобы защитить определенный класс, вы можете перейти к безопасности и добавить новую роль. Я бы рекомендовал вам ознакомиться с разделом безопасности в руководствах по синтаксису здесь: https://parseplatform.github.io/docs/js/guide/ – EReid

ответ

0

Вы должны реализовать verify() функцию следующим образом:

function verify(user) { 
    var sessionToken = user.getSessionToken(); 

    if(!sessionToken) 
     return false; 
    else 
    { 
     var query = new Parse.Query(Parse.Object.extend("_Session")); 
     query.first({useMasterKey:false, sessionToken:sessionToken }) 
      .then(function(validSessionToken){ 
       //User is signed in, and has a valid token (not expired yet) 
       return true; 
      }) 
      .fail(function(){   
       //User doesn't have a valid sessionToken 
       return false; 
      }); 

    } 
} 

Идея заключается в том, чтобы «проверить» sessionToken путем выдачи запроса на _SESSION класс, ищет объект _SESSION, имеющий то же sessionToken как объект запроса, не используя MASTER_KEY.

Если sessionToken существует, он будет возвращен, так как он имеет доступ к ACL с помощью MASTER_KEY и пользователя, имеющего текущий сеансToken.

Использование sessionToken в запросе, а не MASTER_KEY, вы никогда не сможете увидеть другие сеансовые сеансы, кроме этого.