Автор: Dflying Chen ( http://dflying.cnblogs.com/ )
Эта статья основана на статье на сайте Vitamin C.net, в которой используются математические методы, позволяющие значительно снизить сложность логического суждения. Код обнаружения взят из класса JS THIN для проверки надежности пароля.
Atlas предоставляет мощные объектно-ориентированные функции клиентского JavaScript. Я видел публикации двух вышеперечисленных приложений за последние несколько дней и чувствую, что это функциональное требование по-прежнему очень распространено в повседневной разработке. Мне нечего делать ночью, поэтому я инкапсулирую вышеуказанные функции в Behaviors в Atlas для удобства повторного использования. Дополнительные сведения о поведении Atlas см. в разделе Создание пользовательского поведения в ASP.NET Atlas.
Следуя пяти шагам настройки, описанным в этой статье «Создание пользовательского поведения в ASP.NET Atlas», это поведение легко написать. Самая важная часть — это алгоритм проверки надежности пароля. Я тут поленился и просто скопировал THIN-код полностью (брат, не ругайте меня -_-б) Заинтересованные друзья могут перестроить его во что-то более «Атласское». . Эта функция обнаружения будет срабатывать каждый раз, когда пользователь нажимает клавишу на соответствующем входе:
function keyPressHandler() {
// вы можете выполнить рефакторинг этой части, чтобы сделать код более похожим на Atlas :-)
вар PasswordStrength ={
Уровень: ["Высоко, это очень высоко", "Все в порядке", "Блин, это нормально"],
LevelValue: [30,20,0],//значение силы
Коэффициент: [1,2,5],//Символ складывает, соответственно буквы, цифры, другие
KindFactor: [0,0,10,20],//Пароль содержит несколько типов дополнений
Regex: [/[a-zA-Z]/g,/d/g,/[^a-zA-Z0-9]/g] //Обычные числа символов и другие обычные правила
}
PasswordStrength.StrengthValue = функция (pwd)
{
вар StrengthValue = 0;
вар ComposedKind = 0;
for(var i = 0; i < this.Regex.length;i++)
{
var chars = pwd.match(this.Regex[i]);
если (символы! = ноль)
{
StrengthValue += chars.length * this.Factor[i];
Составленныйвид++;
}
}
StrengthValue += this.KindFactor[ComposeKind];
вернуть значение силы;
}
PasswordStrength.StrengthLevel = функция (pwd)
{
значение var = this.StrengthValue(pwd);
for(var i = 0; i < this.LevelValue.length; i++)
{
if(value >= this.LevelValue[i])
верните это.Уровень[i];
}
}
// конец раздела рефакторинга
$(_checkResultLabelID).innerHTML = PasswordStrength.StrengthLevel(this.control.element.value);
}
При этом к этому Behavior добавляется атрибут checkResultLabelID для указания Метки для отображения результатов теста:
var _checkResultLabelID;
this.get_checkResultLabelID = function() {
вернуть _checkResultLabelID;
}
this.set_checkResultLabelID = функция (значение) {
if (_checkResultLabelID != значение) {
_checkResultLabelID = значение;
this.raisePropertyChanged('checkResultLabelID');
}
}
Вы также можете легко добавить еще несколько интересных функций, таких как изменение цвета фона текста подсказки для ввода разной силы и т. д. Полный исходный код можно найти в конце этой статьи.
Шаги тестирования также очень просты. Сначала добавьте ссылку на это поведение в ScriptManager:
<atlas:ScriptManager runat="server" ID="ScriptManager1">.
<Скрипты>
<atlas:ScriptReference Path="PasswordStrengthCheckBehavior.js" />
</скрипты>
</atlas:ScriptManager>
Затем добавьте на страницу поле для ввода пароля (в демонстрационной программе тип пароля не установлен) и диапазон для отображения результатов теста:
<div>
Введите пароль:
<input id="пароль" тип="текст" />
<span id="result"></span>
</div>
Наконец, Atlas Script переносит приведенные выше входные данные в элемент управления Atlas и добавляет поведение, которое мы только что написали:
<script type="text/xml-script">
<page xmlns:script=" http://schemas.microsoft.com/xml-script/2005 ">
<компоненты>
<textBox id="пароль">
<поведение>
<passwordStrengthCheckBehavior checkResultLabelID="result" />
</поведение>
</textBox>
</компоненты>
</страница>
</script>
Это так просто, в браузере так:
Простой пароль:
Средний пароль:
Сложный пароль:
Исходный код и примеры программ можно скачать здесь: