2017-02-21 21 views
0

ok Это то, что начинает показывать несколько недель назад, у меня есть сервер синтаксического анализа, работающий на машине ubuntu с версией 2.3.3, у меня есть группа запущенных облачных функций, ничего необычного, просто запрашивая какой-то определенный класс, все данные в этом классе являются общедоступными, и все они работают большую часть времени. Однако время от времени вызов функции облака начинает возвращать недопустимые ошибки сеанса 209, даже с зарегистрированным пользователем или нет, супер странным, но странно, что когда это происходит, никто другой не может запускать эту функцию, и каждый пользователь начинают получать ту же ошибку.Parse server возвращает недопустимый токен сеанса для общедоступных записей и только при вызове функций

Единственный способ, с помощью которого я могу заставить его работать снова, - перезагрузить сервер, также происходит только с облачными функциями и из приложения ios, я говорю, что это связано с тем, что у нас есть некоторые другие функции вызова частей из php, но кажется, что они не запускаются проблема

2017-02-21T01:26:57.676Z - Failed running cloud function partnersv2 for user undefined with: 
Input: {"k":"","searchType":"","category":"comida"} 
Error: {"code":141,"message":{"code":209,"message":"invalid session token"}} 
2017-02-21T01:26:57.669Z - invalid session token 
2017-02-21T01:26:55.738Z - ParseError { code: 209, message: 'invalid session token' } 
2017-02-21T01:26:55.737Z - Error generating response. ParseError { 
code: 141, 
message: ParseError { code: 209, message: 'invalid session token' } } 

Я понятия не имею, почему это происходит, и я не думаю, что это связано с наследием сеанса причины этого сервера, и пользователь являются новыми, мы начинаем разработку этого несколько месяцев назад, не портированное приложение из старой службы

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

EDIT 1: Это функция облака, которое trowing ошибки

Parse.Cloud.define('partnersv2', function (req, res) { 
    var searchType = req.params.searchType, 
      k = req.params.k, 
      category = req.params.category, 
      query; 

    query = new Parse.Query('Partner'); 
    query.addDescending('is_open'); 
    query.equalTo('enabled', true); 
    query.equalTo('category', category); 
    query.select(['name', 'phone', 'delivery_eta', 'keys', 'price_range', 'is_new', 'cover', 'recommended', 'open_time', 'min_order', 'delivery_rank', 'logo', 'comingsoon', 'category', 'is_open']); 
    if (searchType !== '' && searchType !== undefined && k !== '' && k !== undefined) { 
     if (searchType === 'Tag') { 
      query.equalTo('tags', k); 
     } else { 
      query.equalTo('name', k); 
     } 
    } 
    query.limit(1000); 
    query.find({ 
     success: function (results) { 
      if (results.length > 0) { 
       res.success(results); 
      } else { 
       res.error('404 not found'); 
      } 
     }, 
     error: function (error) { 
      res.error(error); 
     } 
    }); 
}); 

и это скриншот ACL седловины

ACL public

+0

Можете ли вы показать свою функцию облачного кода? Я хотел бы понять, как вы используете пользователя из этой функции. С самообслуживаемым Parse в Cloud Code больше нет понятия «Текущий пользователь», так как вы изменили пользовательский токен и его токен сеанса. Это может помочь в определении проблемы. – Wissam

+0

Привет, спасибо за ответ, я не пользуюсь пользователем, данные класса общедоступны, поэтому я вызываю функцию w/oa пользователя, но да иногда пользователь может быть определен, если зарегистрирован, даже если я не пользуюсь пользователем для этих вызовов , позвольте мне изменить мои вопросы с каким-то фактическим кодом – goseta

+0

, вы когда-нибудь это выяснили? У меня такая же проблема сейчас .... – simonberry

ответ

1

Использование Master Key

Parse.Cloud.define('partnersv2', function (req, res) { 
//var token = req.user.getSessionToken() // getSession Token return r: (yourkey); 
var searchType = req.params.searchType, 
     k = req.params.k, 
     category = req.params.category, 
     query; 

query = new Parse.Query('Partner'); 
query.addDescending('is_open'); 
query.equalTo('enabled', true); 
query.equalTo('category', category); 
query.select(['name', 'phone', 'delivery_eta', 'keys', 'price_range', 'is_new', 'cover', 'recommended', 'open_time', 'min_order', 'delivery_rank', 'logo', 'comingsoon', 'category', 'is_open']); 
if (searchType !== '' && searchType !== undefined && k !== '' && k !== undefined) { 
    if (searchType === 'Tag') { 
     query.equalTo('tags', k); 
    } else { 
     query.equalTo('name', k); 
    } 
} 
query.limit(1000); 
query.find({ 
    useMasterKey: true, // sessionToken: token 
    success: function (results) { 
     if (results.length > 0) { 
      res.success(results); 
     } else { 
      res.error('404 not found'); 
     } 
    }, 
    error: function (error) { 
     res.error(error); 
    } 
}); 

});

+0

Спасибо за ответ, но не работает, я на самом деле уже пробовал это, и не обязательно это делать в первую очередь, потому что все данные публично, не знаю, что вызывает это, у меня есть другой сервер для другого продукта и работает без проблем в течение нескольких месяцев – goseta