Как препятствовать тому, чтобы пользователь имел несколько экземпляров Того же веб-приложения

Почему вы не используете обычную модель, используемую в НЛП?

Эти события можно перевести, как вы говорите, путем вложения матрицы. Затем вы можете представить цепочки событий, используя LSTM (или GRU или RNN или двусторонний LSTM), разница в использовании LSTM вместо обычной сети заключается в том, что вы используете один и тот же модуль, повторенный N раз. Таким образом, ваш вклад на самом деле не 460000, а внутренне событие A косвенно помогает вам узнать о событии B. Это потому, что LSTM имеет модуль, который повторяется для каждого события в цепочке.

У вас есть пример здесь: https://www.kaggle.com/ngyptr/lstm-sentiment-analysis-keras

В общем, я бы сказал следующее (в псевдокоде Keras):

  • Определение общего количества событий. Я генерирую уникальный список.
    unique_events = list (set ([event_0, ..., event_n]))
    You can perform the translation of a sequence with:
    seq_events_idx = map (unique_events.index, seq_events)
    
  • Добавьте необходимый пэд для каждой последовательности:
    sequences_pad = pad_sequences (sequences, max_seq)
    
  • Затем вы можете напрямую использовать вложение для переноса события в соответствующий вектор измерения, который вы рассматривать.
    input_ = Input (shape = (max_seq,), dtype = 'int32')
    embedding = Embedding (len(unique_events),
                        dimensions,
                        input_length = max_seq,
                        trainable = True) (input_)
    
  • Затем вы определяете архитектуру вашего LSTM (например):
    lstm = LSTM (128, input_shape = (max_seq, dimensions), dropout = 0.2, recurrent_dropout = 0.2, return_sequences = True) (embedding)
    
  • Добавьте плотный и желаемый результат:
    out = Dense (10, activation = 'softmax') (lstm)
    

[ 1115] Я думаю, что этот тип модели может помочь вам и дать лучшие результаты.

13
задан Mihai Limbășan 2 April 2009 в 04:41
поделиться

8 ответов

Во-первых, нет нет, и во-вторых, Вы не должны пробовать.

Стратегия всплывающего окна не будет работать (и будет раздражать пользователей). Мне установили мой браузер для 'Открытия окон как Вкладок', и я выбираю, отколоть ли один в другое окно. Или в некоторых случаях, выполнить ли другой браузер - не только другой экземпляр того же - для отображения другой страницы на том же сайте.

С другой стороны идентификатор мини-сессии перестанет работать, потому что сервер не может отслеживать то, является ли запрос от того же пользователя как существующая сессия. Несколько человек могут использовать ту же машину, даже с тем же именем пользователя; или у одного человека может быть несколько отдельных сессий входа в систему на одной или нескольких машинах.

Просто разберитесь в своем протоколе по сравнению с переменными 'Сессии' и удостоверьтесь, что последние зафиксированные изменения - те, которые сохраняются.

7
ответ дан 1 December 2019 в 22:58
поделиться

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

То, что можно сделать однако, должно делать недействительным предыдущую сессию, как только пользователь входит в новое (Немного подобный тому, как может Мгновенные клиенты Обмена сообщениями вести себя).

На каждом входе в систему присвойте новый GUID пользователю в Вашей базе данных. Также сохраните этот GUID в кэше сессии (Никакая потребность поставить его назад и вперед в страницы, которые не будут работать на, ПОЛУЧАЮТ запросы так или иначе). По каждому запросу страницы сравните GUID, присвоенный пользователю в базе данных с GUID в кэше сессии. Если они не соответствуют, возвратитесь, "Вы вошли в систему от где-то в другом месте" ответа.

Обновление я был немного слишком быстр на триггере. Это не предотвращает сценарий, где пользователь открывает несколько вкладок/окон в рамках того же процесса браузера. Таким образом, необходимо было бы объединить это решение с предложением Dave Anderson для хранения хеша ViewState (или просто GUID) так, чтобы только последней подаваемой странице на сессии позволили отправить назад.

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

0
ответ дан 1 December 2019 в 22:58
поделиться

Вы могли проверить, есть ли у пользователя больше чем одна активная сессия. Это могло бы работать, но могло быть проблематично, так как нет никакого хорошего способа определить, действительно ли сессия активна или нет.

0
ответ дан 1 December 2019 в 22:58
поделиться

Мы реализовали решение этой проблемы на slicethepie.com. Пользователям (или "бойскауты") только разрешают иметь одно окно браузера, открытое за один раз, чтобы гарантировать, чтобы они слушали музыку, которую им платят за обзор.

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

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

1
ответ дан 1 December 2019 в 22:58
поделиться

Я предложил бы, чтобы Вы хешировали ViewState для страницы и сохранили его в переменной сеанса, прежде чем это будет возвращено как Ответ.

Затем для Запроса сначала проверяют хеш возвращенного ViewState против того, который Вы имеете в переменной сеанса и если они не соответствуют, не обрабатывают изменений на странице и отображают уведомление Вашему пользователю или перенаправляют их к ошибочной странице.

Два метода класса Page, который Вы захотите переопределить;

protected override object LoadPageStateFromPersistenceMedium()

protected override void SavePageStateToPersistenceMedium(object viewState)
1
ответ дан 1 December 2019 в 22:58
поделиться

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

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

if (useOwnWindow && window.name != 'YourAPP'){
    var w = window.open(document.location, 'YourAPP', 'toolbar=no,status=yes,resizable=yes,scrollbars=yes');
    if (w==null){
        alert("Please turn off your pop-up blocker");
    }else{
        window.open('','_parent','');
        self.opener="";
        self.close();
    }
 }

Отметьте флаг useOwnWindow, если используется разработчиками, таким образом, мы можем открыть его многократно

2
ответ дан 1 December 2019 в 22:58
поделиться

Существует ли простой способ определить, имеют ли они уже окно браузера, открытое для веб-приложения и если так, просто закрывают браузер или отображают другую страницу для уведомления их, у них может только быть 1 открытое за один раз?

Короче говоря, Нет.
Не пишущий некоторый элемент управления ActiveX, нет никакого кода, Вы могли записать, что это могло мешать пользователю открыться (отдельный экземпляр), IE/FF и т.д. и иметь один экземпляр обнаруживает другой.

2
ответ дан 1 December 2019 в 22:58
поделиться

Вы могли присвоить идентификатор 'мини-сессии' каждому экземпляру входной формы, затем использовать Ajax для проверки с помощью ping-запросов сервера с тем идентификатором. Если пользователь пытается запросить ту же форму, когда существует активный идентификатор, она должна отобразить сообщение об ошибке. Если сервер не слышит ping для определенного количества времени, истекает мини-сессия. (Это - в основном очень простая стратегия блокировки),

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

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