【Система управления студентами】Управление разрешениями
【Система управления студентами】Управление разрешениями

#7. Обновление программы

## 7.1 Войдите для обновления

### 7.1.1 Код проверки изображения

* задняя часть: * Требуется, чтобы контроллер генерировал коды проверки и сохранял сгенерированную случайную строку кодов проверки в Redis. * Когда пользователь входит в систему, код подтверждения получается и код подтверждения проверяется. * внешний интерфейс: * Напишите форму для отображения проверочного кода (напишите функцию для изменения пути к проверочному коду изображения), которую можно будет переключать при нажатии. *Релиз шлюза

1. Контроллер необходим для генерации кода проверки и сохранения сгенерированной случайной строки кода проверки в Redis.

2. Когда пользователь входит в систему, код подтверждения получается и код подтверждения проверяется.

Язык кода:javascript
копировать
   @PostMapping("/login")
    public BaseResult login(@RequestBody TbUser tbUser) {
        //0.1 Проверка: Изображение Проверочный код
        String key = "login" + tbUser.getUserName();
        String redisVerifyCode = stringRedisTemplate.opsForValue().get(key);
        stringRedisTemplate.delete(key);
        if(redisVerifyCode == null) {
            return BaseResult.error("Проверочный кодInvalid");
        }
        if(! redisVerifyCode.equalsIgnoreCase(tbUser.getImageVerifyCode())) {
            return BaseResult.error("Проверочный код Ошибка");
        }
        //.....
    }

3. Напишите форму для отображения проверочного кода (напишите функцию для изменения пути к проверочному коду изображения), которую можно будет переключать при нажатии.

4. Релиз шлюза

### 7.1.2 Код подтверждения электронной почты

* Вариант 1. Используйте класс инструментов отправки электронной почты для прямой отправки электронных писем. 【выбирать】 * Особенности: Этот инструмент зависит от стороннего производителя, поэтому, если третья сторона работает медленно, наша программа также будет работать медленно. * Вариант 2. Используйте MQ в качестве промежуточного программного обеспечения для обмена отправленной информацией, а затем используйте службу MQ для отправки электронных писем. (предыдущее демо) * Возможности: Используя MQ для отделения третьих сторон, нашим программам не нужно полагаться на время отклика третьих сторон.

* задняя часть: * Подготовительные работы: координаты, yml, инструменты. * Напишите метод отправки писем. * Когда пользователь входит в систему, проверьте код подтверждения электронной почты. * внешний интерфейс: * Предоставьте место для ввода адреса электронной почты и кнопку отправки. * Укажите место для ввода проверочного кода. *Релиз шлюза

* задняя часть:

* Подготовительные работы: координаты, yml, инструменты.

    ~~~xml     <!-- JavaMail пусковая установка -->             <dependency>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-starter-mail</artifactId>             </dependency>     ~~~

~~~ымл Весна: почта: Хост: smtp.126.com #Отправить почтовый сервер Имя пользователя: itcast_lt@126.com #Account Пароль: 1qaz2wsx #Пароль ​ ​ Кодировка по умолчанию: UTF-8 ​ #Кодировка по умолчанию ~~~

* Напишите метод отправки писем.

Язык кода:javascript
копировать
 @Resource
    private JavaMailSender javaMailSender;

    @PostMapping("/send")
    public BaseResult send(@RequestBody TbUser tbUser) {
        try {
            // случайный Проверочный код
            String code = RandomStringUtils.randomNumeric(4);
            // Сохранить в Redis
            String key = "loginEmail" + tbUser.getUserName();
            stringRedisTemplate.opsForValue().set(key, code , 5 , TimeUnit.MINUTES);
            // отправлять
            EmailUtils.sendEmail(javaMailSender, «Вход пользователя», tbUser.getEmail(), "Проверочный код для: " + code);
            // возвращаться
            return BaseResult.ok("почтаотправлятьуспех");
        } catch (Exception e) {
            e.printStackTrace();
            return BaseResult.error("отправлятьпочтанеудача");
        }
    }

* Когда пользователь входит в систему, проверьте код подтверждения электронной почты.

Язык кода:javascript
копировать
  //0.2 Проверка: электронная почта код
        String keyEmail = "loginEmail" + tbUser.getUserName();
        String redisEmailVerifyCode = stringRedisTemplate.opsForValue().get(keyEmail);
        stringRedisTemplate.delete(keyEmail);
        if(redisEmailVerifyCode == null) {
            return BaseResult.error("emailПроверочный кодInvalid");
        }
        if(! redisEmailVerifyCode.equalsIgnoreCase(tbUser.getEmailVerifyCode())) {
            return BaseResult.error("emailПроверочный код Ошибка");
        }

* внешний интерфейс:

* Предоставьте место для ввода адреса электронной почты и кнопку отправки.

Язык кода:javascript
копировать
async sendEmail() {
      let { data: baseResult } = await this.$axios.post(`/user-service/user/send`, this.user)
      // намекать
      if( baseResult.code == 20000 ) {
        this.$message.success( baseResult.message )
      } else {
        this.$message.error( baseResult.message )
      }
    }

* Укажите место для ввода проверочного кода.

*Релиз шлюза

###7.1.3 Назначение: Код подтверждения по СМС

## 7.2 Обновление списка студентов

* Закомментируйте исходный контент:

* Напишите asyncData для отправки запроса SSR.

  ~~~js     асинхронные asyncData(контекст) {       // аякс       let { data: baseResult } = await context.$axios.get('/classes-service/classes')       // Возврат результатов       возвращаться {         Список классов: baseResult.data       }     },   ~~~

* Примечание. Когда SSR отправляет запрос, он не может получить соответствующий контент на стороне браузера (localStorage, sessionStorage, cookie и т. д.).

* Выпуск у ворот

## 7.3 Обновление списка персонажей

* Аннотировать существующие

* Напишите asyncData, чтобы дважды отправить ajax.

  ~~~js     async asyncData( context ) {       // Отправить ajax 2 раза       let ajax1 = context.axios.get('/user-service/role')       let ajax2 = context.axios.get(`/user-service/perm/parent/0`)       let [{data: roleBaseResult}, {data: permBaseResult}] = await Promise.all([ajax1, ajax2])       // Данные процесса       return {         roleList: roleBaseResult.data,         permList: permBaseResult.data       }     },   ~~~

*Конфигурация шлюза

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода