как отображать объекты в массиве с помощью пробелов

Возможно ли, чтобы приложение могло проверить действительность токена самостоятельно, не делая сетевой вызов на сервере auth?

  • Истечение срока действия: Включить en exp заявить в токен с датой истечения срока действия. Любой клиент может декодировать токен и проверять дату
  • Подпись: клиент может проверить подпись маркера, чтобы проверить, исходит ли он от ожидаемого сервера и доверять содержащимся данным. Затем вам понадобится использовать асимметричную пару ключей (например, RSA)

. Каковы лучшие практики, которые должен выполнять разработчик приложения при использовании сервера auth для SSO?

< / blockquote>

Этот вопрос основан на мнениях и вне темы в StackOverflow. Не могли бы вы уточнить свои сомнения или включить проблему программирования?

Является ли SSO служебной?

Нет, ваше приложение является ярким примером того, зачем нужна система SSO:

  • SSO: 5 приложений -> 1 пользовательский вход
  • Без SSO: 5 приложений -> 5 пользовательских логинов
0
задан Corey Cerullo 20 January 2019 в 00:29
поделиться

2 ответа

Вам не нужно создавать двух помощников. Работает только ваш первый помощник:

Template.hello.helpers({
  pieces() {
    let data = [{
      "_id": "5c43b0e463ad7e8adfa4f07a",
      "name": "The Box",
      "price": "80",
      "parts": [
        { "pname": "piccolo", "pprice": "3" },
        { "pname": "Flute 1", "pprice": "3" }
      ]
    }]

    return data;
  }
});

Затем вы можете выполнять итерации по частям и частям. Если вы хотите получить доступ внутри вложенного # каждого имени элемента И имени элемента. Вы можете использовать {{../name}} для доступа к родительскому Datacontext.

<table class="table">
  <tbody>
    {{#each pieces}}
    <tr class="itemList">
      <td class="name">{{name}}</td>
      <td class="pdf">PDF</td>
      <td class="audio">AUDIO</td>
      <td class="format">FORMAT</td>
      <td class="price">${{price}}</td>
      <td><input class="qty" type="number" name="quantity" value="0"></td>
    </tr>
      {{#each parts}}
      <tr>
        <td colspan="3">{{../name}}</td>
        <td class="partName">{{pname}}</td>
        <td class="partPrice">{{pprice}}</td>
        <td><input class="partQty" type="number" name="quantity" value="0"></td>
      </tr>
      {{/each}}
    {{/each}}
  </tbody>
</table>

Но использование блока {{#each}} не очень хорошая практика, вы должны использовать {{#each in}} . Блок {{#each in}} создает переменную, которую вы можете легко использовать.

<table class="table">
  <tbody>
    {{#each piece in pieces}}
    <tr class="itemList">
      <td class="name">{{piece.name}}</td>
      <td class="pdf">PDF</td>
      <td class="audio">AUDIO</td>
      <td class="format">FORMAT</td>
      <td class="price">${{piece.price}}</td>
      <td><input class="qty" type="number" name="quantity" value="0"></td>
    </tr>
      {{#each part in piece.parts}}
      <tr>
        <td colspan="3">{{piece.name}}</td>
        <td class="partName">{{part.pname}}</td>
        <td class="partPrice">{{part.pprice}}</td>
        <td><input class="partQty" type="number" name="quantity" value="0"></td>
      </tr>
      {{/each}}
    {{/each}}
  </tbody>
</table>
0
ответ дан Gaëtan Rouziès 20 January 2019 в 00:29
поделиться

Первое, что нужно понять, это то, что ваш parts помощник а) не работает и б) не то, что вам нужно в любом случае.

  • a) bandmusic.find({parts}) не означает «вернуть массив частей из документов в коллекции bandmusic», что, как вам кажется, и требуется.

{parts} - сокращение от ES6 для {parts: parts} (см. этот ответ ). Но ваша функция не имеет переменной parts - поэтому в вашем find вы действительно говорите: «найдите документы, которые соответствуют условию {parts: undefined}

  • б) Но это не так важно, потому что вам здесь не нужен помощник.

То, что вы пытаетесь сделать со своим вложенным #each, это циклически проходить по каждому документу в базу данных, а затем в каждом документе выполните цикл по массиву parts.

Итак, вы получаете документы от своего помощника pieces, и каждый документ содержит массив parts, который вы можете просто циклически проходить без помощи помощника.

  • c) простое решение

Ваш код должен работать, если вы просто удалите parts помощник. У Blaze есть порядок поиска, о котором вы можете прочитать здесь . Это означает, что когда Blaze видит parts, он сначала думает: «Есть ли помощник, который называется parts?» - который есть, и он не работает, так что ничего не происходит.

Но что вы хотите, чтобы это подумайте: «Есть ли поле в текущем контексте данных, называемое parts», - оно есть, но helpers идет выше в порядке поиска, поэтому оно никогда не попадает туда.

Так что самое простое решение в теории это удалить помощника.

  • d) Более четкое решение и лучшие практики

Как видно из ссылки lookup order, часто неясно, что относится к тому, что в пробелах / Blaze. Вы можете сделать вещи намного понятнее, используя синтаксис, описанный в Blaze docs для each

Вместо #each array вы должны ввести новую переменную для ссылки на текущий элемент в массив - #each item in array. А затем получите доступ к свойствам элемента как обычно - item.prop1 - item.prop2

Таким образом, ваш новый код становится:

{{#each piece in pieces}}
  <tr class="itemList">
    <td class="name">{{piece.name}}</td>
    <td class="pdf">PDF</td>
    <td class="audio">AUDIO</td>
    <td class="format">FORMAT</td>
    <td class="price" >${{piece.price}}</td>
    <td><input class ="qty" type ="number" name ="quantity" value="0"></td>
  </tr>
  {{#each part in piece.parts}}
    <tr>
      <td colspan="3"></td>
      <td class="partName">{{part.pname}}</td>
      <td class="partPrice">{{part.pprice}}</td>
      <td><input class="partQty" type="number" name="quantity" value="0"></td>
    </tr>
  {{/each}}
{{/each}}
0
ответ дан rubie 20 January 2019 в 00:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: