Безопасность уровня строки с платформой объекта

По умолчанию display стиль CCS пользовательского элемента - inline.

Вы должны сделать его block или inline-block, и вы увидите <canvas> внутри вашего пользовательского элемента.

<style>
    canvas { border: 1px solid black }
    bar-chart { border: 1px solid red ; display: block }
</style>

class BarChart extends HTMLElement {
  connectedCallback() {
    let templateEl = document.getElementById("id_bar-chart_template");
    this.append(templateEl.content.cloneNode(true));
    let ctx = this.querySelector("#id_bar-chart_inside_template");
        new Chart(ctx, {
        type: 'bar',
        data: {
            labels: ["Africa", "Asia", "Europe", "Latin America", "North America"],
            datasets: [
                {
                    label: "Population (millions)",
                    backgroundColor: ["#3e95cd", "#8e5ea2", "#3cba9f", "#e8c3b9", "#c45850"],
                    data: [2478, 5267, 734, 784, 433]
                }
            ]
        },
        options: {
            legend: {display: false},
            title: {
                display: true,
                text: 'Predicted world population (millions) in 2050'
            }
        }
    });
  }
}
customElements.define("bar-chart", BarChart);
canvas { border: 1px solid black }
bar-chart { border: 1px solid red ; display: inline-block }
<script src=https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.7.3/Chart.min.js></script>
<div class="container">
    <div class="row">
        <div class="col-12">
            <h1>Products and brands of vendors</h1>
            <bar-chart data-url="">
            </bar-chart>
        </div>
    </div>
</div>
<template id="id_bar-chart_template">
    <canvas id="id_bar-chart_inside_template"></canvas>
    <h3>Inside template</h3>
</template>

10
задан Rick 4 October 2008 в 17:22
поделиться

3 ответа

Уверенный можно сделать это. Важная вещь сделать состоит в том, чтобы блокировать прямой доступ к контексту объекта (препятствующий тому, чтобы пользователи создали их собственный ObjectQuery) и вместо этого дать клиенту более узкий шлюз, в котором можно получить доступ и видоизменить объекты. Мы делаем это с шаблоном Репозитория Объекта. Можно найти реализацию в качестве примера этого шаблона для платформы объекта в этом сообщении в блоге. Снова, ключ блокирует доступ к контексту объекта. Обратите внимание, что класс контекста объекта неравнодушен. Таким образом, необходимо смочь предотвратить "несанкционированные" средства инстанцирования его, а именно, за пределами блока репозитория.

Однако существует тонкость для рассмотрения. Если Вы реализуете безопасность представления уровня строки на определенном типе объекта через шаблон репозитория, то необходимо рассмотреть другие средства, которыми клиент мог получить доступ к тем же объектам. Например, через навигационные отношения. Вы, возможно, должны сделать некоторые из тех отношений частными, который можно сделать в модели. У Вас также есть опция определения пользовательского запроса или хранимой процедуры для загрузки/сохранения объектов. Хранимые процедуры имеют тенденцию быть конкретным сервером БД, но SQL может быть записан универсальным способом.

В то время как я не соглашаюсь, что это не может быть сделано с Платформой Объекта, я действительно соглашаюсь с, "делают это на сервере БД" комментарии, поскольку необходимо реализовать защиту подробно.

10
ответ дан 3 December 2019 в 23:15
поделиться

Место, где Вы добавляете безопасность действительно, зависит от того, от кого Вы пытаетесь защитить.

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

В Вашем случае это походит на "пользователей", от которых Вы пытаетесь защитить, разработчики. Это вполне немного более трудно. Если у разработчиков нет доступа для создания модификаций к самой базе данных, то необходимо будет поместить безопасность в уровень базы данных. Никакая сумма eSQL доступа не будет способной обойти базу данных, говоря "нет".

2
ответ дан 3 December 2019 в 23:15
поделиться

То, чего Вы пытаетесь достигнуть, по определению, не возможно.

Если безопасность не будет обработана явно базовым приложением базы данных (SQL Server, Oracle, безотносительно) затем, то стандартные инструменты как Studio управления SQL унесут право мимо него.

Лучшее, которое можно сделать, осуществляют безопасность уровня строки с помощью пользователей приложения, ТОЛЬКО ЕСЛИ у тех пользователей нет доступа к базе данных с помощью другого механизма.

1
ответ дан 3 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

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