Авторизация при помощи QR-кода на языке C#

В данной статье мы разбираем код, по которому будет происходить авторизация при помощи QR-кода на языке C#. Наш код не будет являться законченной программой, он покажет сам принцип авторизации, и его можно будет использовать при создании программы, в которой данная авторизация может понадобиться.

Принцип у нашей программы будет такой: пользователь запускает её, появляется небольшая форма с кнопкой “Авторизироваться”:

Авторизация при помощи QR-кода на языке C# - vscode.ru

После того, как пользователь нажмёт на эту кнопку, эта же форма приобретает вот такой вид:

Авторизация при помощи QR-кода на языке C# - vscode.ru

Пользователь нажимает на кнопку “Получить изображение”, появляется картинка с QR-кодом, который пользователь считывает при помощи специального сканера, какого-либо приложения или т.д. Под этим кодом зашифровано шестизначное число. После того, как пользователь смог его распознать, он пишет число в TextBox, затем нажимает “Принять”.

Если введённое число верно, то форма приобретёт такой вид:

Авторизация при помощи QR-кода на языке C# - vscode.ru

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

После разбора логики программы приступаем к коду.

Для начала нам надо скачать и подключить библиотеку, которая поможет нам генерировать QR-коды. Её название – MessagingToolkit.QRCode.dll. Скачать данную библиотеку вместе с исходником программы можно внизу статьи. Подробнее узнать о подключении и работе MessagingToolkit.QRCode можно здесь.

Добавляем библиотеку так, как показано ниже.

Правой кнопкой мыши нажимаем на References, а затем – “Добавить ссылку”.

Авторизация при помощи QR-кода на языке C# - vscode.ru

В левой панели меню нажимаем “Обзор”.

Авторизация при помощи QR-кода на языке C# - vscode.ru

Затем внизу окна нажимаем “Обзор”, ищем нужную библиотеку и нажимаем “Добавить”.

Авторизация при помощи QR-кода на языке C# - vscode.ru

После подключаем её в самом коде:

Библиотека подключена. Идём дальше – к дизайну программы.

Мы разместили в верхней части формы три разных элемента – кнопку “Авторизация”, поверх неё PictureBox, а поверх них ещё Label с текстом “Вы успешно авторизировались”. Затем мы скрыли в свойствах PictureBox и Label, установив их значение Visible в false. Открывать их мы будем по мере нашей надобности.

Авторизация при помощи QR-кода на языке C# - vscode.ru

Остальные элементы мы разместили так, как показано на второй картинке.  Изображение с надписью “Получите изображение” мы сделали в фотошопе, и добавили через свойство Image в PictureBox:

Авторизация при помощи QR-кода на языке C# - vscode.ru

После расстановки всех элементов мы уменьшили размер формы до 238х101 пиксель:

Авторизация при помощи QR-кода на языке C# - vscode.ru

Теперь дважды кликаем на кнопку “Авторизация”, и пишем следующий код:

В первой строке мы изменяем высоту формы. Удлиняем её, чтобы всплыли скрытые от глаз до этого элементы.

Во второй меняем отображение PictureBox’a на противоположное. Грубо говоря, он может иметь два значения отображения – он либо скрытый, либо видимый. Если он в данный момент видимый, то эта строка его скроет. Если скрыт (как у нас), значит теперь он появится.

А в третьей строчке мы скрываем кнопку “Авторизация”, чтобы она нам не мешала.

Отлично, форму авторизации мы открыли, теперь надо получить изображение с QR-кодом.

Алгоритм будет следующий. Мы заранее решили, что хотим, чтобы наш код был шестизначным (он, естественно, может быть с любым количеством знаков на Ваше усмотрение). Мы генерируем рандомное шестизначное число, из него кодируем изображение с QR-кодом и вставляем в PictureBox.

В форме дважды щёлкаем на кнопку “Получить изображение”  и пишем код:

Проверяем:

Авторизация при помощи QR-кода на языке C# - vscode.ru

Работает. Изображение с закодированным в нём числом появляется.

Далее пользователь должен раскодировать его при помощи специальных приложений на телефоне, планшете, или при помощи других программ и сканеров.

Допустим, он это сделал и получил искомое число. Теперь нам надо его принять и авторизировать пользователя.

Дважды кликаем на последнюю кнопку “Получить”, пишем:

Мы раскодировали изображение и получили число из него. Теперь надо сравнить это число с числом, которое раскодировал и ввёл пользователь:

Это всё произойдёт, если пользователь успешно авторизировался. Если же он написал неверное число, то мы возвращаем его к начальной форме с кнопкой “Авторизация”, и в его случае всё повторится заново:

Причём, на этот раз, как только пользователь нажмёт кнопку “Авторизация”, изображение с qr-кодом появится сразу, и его не над будет получать. Если же нажать в это время на “Получить изображение”, то сгенерируется новое число и новое изображение к этому числу.

Программа готова. Исходник программы с подробными комментариями и dll библиотека лежат ниже:

Скачать MessagingToolkit.QRCode.dll Скачать исходник

 

Авторизация при помощи QR-кода на языке C#
5 (100%) 3 votes

Поделиться в соц. сетях:

Один комментарий к статье “Авторизация при помощи QR-кода на языке C#

  1. Андрейка

    encoder.QRCodeEncodeMode= QRCodeEncoder.ENCODE_MODE.BYTE;
    encoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.Q; //уровень encoder.QRCodeScale = 2; // размер пикселя
    encoder.QRCodeVersion = 30; //версия
    Bitmap qrcode = encoder.Encode(qrtext,UTF8Encoding.UTF8); // кодируем слово

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">