УСПОКОИТЕЛЬНАЯ аутентификация для [закрытых] веб-приложений

Во-первых, реализуйте indexOf в JavaScript для браузеров, которые уже не имеют его. Например, см. отдельно оплачиваемые предметы массива Erik Arvidsson (также, связанное сообщение в блоге ). И затем можно использовать indexOf, не волнуясь о поддержке браузера. Вот немного оптимизированная версия его indexOf реализация:

if (!Array.prototype.indexOf) {
    Array.prototype.indexOf = function (obj, fromIndex) {
        if (fromIndex == null) {
            fromIndex = 0;
        } else if (fromIndex < 0) {
            fromIndex = Math.max(0, this.length + fromIndex);
        }
        for (var i = fromIndex, j = this.length; i < j; i++) {
            if (this[i] === obj)
                return i;
        }
        return -1;
    };
}

Это изменяется для хранения длины так, чтобы это не должно было смотреть он каждое повторение. Но различие не огромно. Функция менее общего назначения могла бы быть быстрее:

var include = Array.prototype.indexOf ?
    function(arr, obj) { return arr.indexOf(obj) !== -1; } :
    function(arr, obj) {
        for(var i = -1, j = arr.length; ++i < j;)
            if(arr[i] === obj) return true;
        return false;
    };

я предпочитаю использовать стандартную функцию и оставлять этот вид микрооптимизации для того, когда это действительно необходимо. Но если Вы увлечены микрооптимизацией, я адаптировался сравнительные тесты что roosterononacid, связанный с в комментариях, с сравнительный тест, ищущий в массивах . Они довольно сыры, хотя, полное расследование протестировало бы массивы с различными типами, различными длинами и находящими объектами, которые происходят в различных местах.

24
задан Community 23 May 2017 в 10:29
поделиться

1 ответ

Интересный вопрос. Я заканчиваю реализацию REST API прямо сейчас - использовал mod_rewrite и PHP. Он использует базовую аутентификацию HTTP через HTTPS. Пока что мы работаем над клиентом Palm Pre. Разработчик этого клиента был немного сбит с толку из-за необходимости отслеживать учетные данные пользователя для отправки с каждым запросом.

Идея раскрытия SESSION как ресурса интересна. В том числе это все равно нарушит строгие принципы RESTful. Даже если вы предоставите SESSION как ресурс, вы все равно будете использовать сервер для отслеживания состояния клиента. Строгое соблюдение REST, вероятно, потребует использования файлов cookie, поскольку это постоянная память на стороне клиента, доступная вам из браузера. Проблема в том, что вам остается создать клиент JavaScript (или FLash?) Для управления HTTP-запросами на стороне клиента, если вы не хотите, чтобы пользователи взаимодействовали с реализованным браузером сбором учетных данных HTTP.

Один инструмент, который я нашел полезен инструмент REST Client для Firefox ... но я все равно ввожу свои учетные данные в стандартное всплывающее окно браузера, даже когда использую его.

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

... добавление к этому от 23.10.2012 ...

Требование методологии RESTful заставлять клиента отслеживать собственное состояние не является просто академический. Это имеет важное значение для масштабируемости и адресуемости открытых ресурсов. Когда я говорю это, я предполагаю, что по состоянию клиента мы говорим об атрибутах, специфичных для запрашивающего пользователя, которые влияют на ответы, выдаваемые интерфейсом (ами) RESTful. Одна из сильных сторон REST - его адресность. Когда вы делаете его ответы каким-либо образом зависимыми от информации, не переданной в запросе, вы начинаете отказываться от этого. Просто запоздалая мысль ... 3 года спустя, лол.

4
ответ дан 29 November 2019 в 00:30
поделиться
Другие вопросы по тегам:

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