#7. Обновление программы
## 7.1 Войдите для обновления
### 7.1.1 Код проверки изображения
* задняя часть: * Требуется, чтобы контроллер генерировал коды проверки и сохранял сгенерированную случайную строку кодов проверки в Redis. * Когда пользователь входит в систему, код подтверждения получается и код подтверждения проверяется. * внешний интерфейс: * Напишите форму для отображения проверочного кода (напишите функцию для изменения пути к проверочному коду изображения), которую можно будет переключать при нажатии. *Релиз шлюза
1. Контроллер необходим для генерации кода проверки и сохранения сгенерированной случайной строки кода проверки в Redis.
2. Когда пользователь входит в систему, код подтверждения получается и код подтверждения проверяется.
@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 #Кодировка по умолчанию ~~~
* Напишите метод отправки писем.
@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("отправлятьпочтанеудача");
}
}
* Когда пользователь входит в систему, проверьте код подтверждения электронной почты.
//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Проверочный код Ошибка");
}
* внешний интерфейс:
* Предоставьте место для ввода адреса электронной почты и кнопку отправки.
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 } }, ~~~
*Конфигурация шлюза