Netsuite Suitelet - действительный сеанс

Я новичок в написании сценариев NS Suitelet.

Я создал внешний и внутренний набор, а затем развернул оба.

Для внешнего пакета (loginform.js):

  • Я использую https://rest.netsuite.com/rest/roles и передаю имя пользователя и пароль из формы.
  • Я получаю код ответа 200, и NS возвращает учетные данные для пользователя.
  • в сообщении я использую nlapiRequestURL(url), где url - конечная точка внутреннего пакета

Для внутреннего набора (verify.js)

  • простая функция { var login = nlapiGetLogin(); }
  • поэтому, если логин не равен нулю, пользователь вошел в систему

Итак, если я вхожу в Netsuite и выполняю внутренний пакет, я получаю действительный объект входа.

Но если внешний пакет вызывает внутренний пакет, он выдаст ошибку доступа к разрешению.

Что мне здесь не хватает? Я знаю, что у меня, вероятно, нет «действующей сессии».

Я вижу, что этот «действительный сеанс» много упоминается в руководстве разработчика, но нигде не объясняется, как создать или получить этот сеанс.

Пожалуйста, помогите мне создать или получить этот действительный сеанс NS.


person Joe Smith    schedule 15.01.2017    source источник
comment
что вы имеете в виду "внешний люкс"? По определению, все наборы являются сценариями на стороне сервера.   -  person k1komans    schedule 16.01.2017
comment
Кроме того, проверяли ли вы запись о развертывании сценария вашего внешнего пакета программ? Необходимо убедиться, что у «Выполнить как роль» есть соответствующие разрешения, чтобы делать то, что вы хотите.   -  person k1komans    schedule 16.01.2017


Ответы (1)


Внутренние Suitelets требуют от пользователя аутентификации. В этом случае внешний пакет (Netsuite) вызывает внутренний Suitelet (также Netsuite), и, поскольку внешний пакет никогда не аутентифицировался, он не загружается. Процесс аутентификации для Suitelets предназначен для использования браузерами, поскольку он выполняется в веб-интерфейсе и устанавливает cookie.

Вам нужно сделать оба Suitelet внешними, чтобы они могли вызывать друг друга, вы можете добавить заголовок аутентификации для защиты соединения.

В качестве альтернативы я бы предложил использовать только один внутренний пакет и сделать так, чтобы Netsuite обрабатывала вход / аутентификацию, устанавливая пользователей в качестве клиентов, предоставляя им доступ и делая развертывание Suitelet доступным для роли клиента. Вы даже можете обойти разрешения клиента, настроив Suitelet для запуска от имени администратора. Если вы не хотите, чтобы каждый клиент имел доступ к Suitelet, просто установите настраиваемое поле в записи клиента, чтобы указать, есть ли у пользователя доступ к нему.

person Adolfo Garza    schedule 16.01.2017