Методы перекрестного браузера для отключения кэширования пароля

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

В pyspark есть функция unix_timestamp, которая:

unix_timestamp(timestamp=None, format='yyyy-MM-dd HH:mm:ss')

Конвертировать строку времени с данным шаблоном ('yyyy-MM-dd HH:mm:ss' по умолчанию) в метку времени Unix ( в секундах ), используя часовой пояс по умолчанию и локаль по умолчанию, возвращают ноль в случае неудачи.

if `timestamp` is None, then it returns current timestamp.

>>> spark.conf.set("spark.sql.session.timeZone", "America/Los_Angeles")
>>> time_df = spark.createDataFrame([('2015-04-08',)], ['dt'])
>>> time_df.select(unix_timestamp('dt', 'yyyy-MM-dd').alias('unix_time')).collect()
[Row(unix_time=1428476400)]
>>> spark.conf.unset("spark.sql.session.timeZone")

Пример использования:

import pyspark.sql.functions as F
res = df.withColumn(colName,  F.unix_timestamp(F.col(colName), \
    format='yyyy-MM-dd HH:mm:ss.000').alias(colName) )

Что вы можете сделать, это разделить строку даты (str.rsplit('.', 1)), разделяя миллисекунды (например, создавая другой столбец) в ваш фрейм данных.

РЕДАКТИРОВАТЬ

В вашем примере проблема в том, что время имеет тип string. Сначала вам нужно преобразовать его в тип timestamp: это можно сделать с помощью:

res = time_df.withColumn("new_col", to_timestamp("dt", "yyyyMMdd-hh:mm:ss"))

Затем вы можете использовать unix_timestap

res2 = res.withColumn("time",  F.unix_timestamp(F.col("parsed"), format='yyyyMMdd-hh:mm:ss.000').alias("time"))

Наконец, чтобы создать столбцы с миллисекунды:

res3 = res2.withColumn("ms", F.split(res2['dt'], '[.]').getItem(1))
12
задан Chris Noe 26 December 2008 в 15:23
поделиться

4 ответа

Добавить autocomplete="off" к Вашему <input> элементы. Работы во всех современных браузерах, IIRC.

11
ответ дан 2 December 2019 в 21:45
поделиться

Я предположил бы, что браузеры сохраняют поля формы, когда форма отправлена. Что при использовании Ajax для получения значения поля пароля, отправьте его, затем очистите поле? Форма на самом деле никогда не отправлялась бы, таким образом, браузер никогда не будет, теоретически, иметь возможности сохранить значения.

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

AFAIK, замаскированные поля (которые показывают '*' вместо символа, который Вы вводите) никогда не сохраняются для автоматического заполнения. Вы хотите препятствовать тому, чтобы пользователь помнил пароль на Ваш сайт в сохраняющих пароль средствах браузера?

0
ответ дан 2 December 2019 в 21:45
поделиться

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

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

Тот же метод работает хорошо против спама, так как большинство ботов полагается на нахождение общих имен полей.

0
ответ дан 2 December 2019 в 21:45
поделиться
Другие вопросы по тегам:

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