zdppy+vue3+onlyoffice文档管理系统实战 20240831上课笔记 继续完善登录功能

本文主要是介绍zdppy+vue3+onlyoffice文档管理系统实战 20240831上课笔记 继续完善登录功能,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

遗留的问题

  • 1、整合验证码的接口
  • 2、渲染验证码
  • 3、实现验证码校验的功能
  • 4、验证码校验通过之后,再校验登录功能

验证码框架怎么使用

安装:

pip install zdppy_captcha

使用示例:

import zdppy_api as api
import zdppy_captcha
import zdppy_cachecache = zdppy_cache.Cache("tmp/.captcha_cache")
app = api.Api(routes=[*zdppy_captcha.zdppy_api.captcha(api, cache),]
)if __name__ == '__main__':import zdppy_uvicornzdppy_uvicorn.run(app, host="0.0.0.0", port=8888)

最核心的代码:

app = api.Api(routes=[*zdppy_captcha.zdppy_api.captcha(api, cache),]
)

当前项目依赖

zdppy-amauth
zdppy-amcrud
zdppy-cache
zdppy-captcha==0.1.4
zdppy-env
zdppy-jwt
zdppy-log
zdppy-mauth
zdppy-mcrud
zdppy-mysql
zdppy-password
zdppy-rand
zdppy-req
zdppy-uvicorn
zdppy_api
zdppy_snowflake

将接口整合到项目中

routes/captcha.py

import zdppy_captcha
import zdppy_api as api
from zdppy_cache import Cachecache = Cache("./tmp/.captcha")def get_captcha_routes():"""获取验证码相关的路由"""return zdppy_captcha.zdppy_api.captcha(api, cache)

routes/init.py

import zdppy_amauth as amauthfrom .file import get_file_routes
from .doc import get_doc_routes
from .captcha import get_captcha_routesdef get_routes(db):"""初始化路由"""routes = []routes.extend(get_file_routes(db))  # 文件相关的路由routes.extend(get_doc_routes())  # 文档相关的路由routes.extend(amauth.routers.get_all_routers(db))  # 权限相关的路由routes.extend(get_captcha_routes())  # 验证码相关的路由return routes

渲染验证码

当前的登录界面

在这里插入图片描述

获取验证码信息

login/api.js

import axios from "axios";export default {getCaptcha: () => {axios({method: "get",url: `http://127.0.0.1:18888/zdppy_captcha`,}).then(resp => {console.log("获取验证码成功", resp.data)})}
}

index.vue

onMounted(() => {api.getCaptcha()
})

在这里插入图片描述

优化获取验证码图片的方法

api.js

import axios from "axios";export default {// 获取验证码图片信息getCaptcha: async () => {let key = ""let img = ""await axios({method: "get",url: `http://127.0.0.1:18888/zdppy_captcha`,}).then(resp => {if (resp.data && resp.data.data && resp.data.status && resp.data.code === 10000) {key = resp.data.data.keyimg = resp.data.data.img}})return {key, img}}
}

index.vue

const captchaKey = ref() // 验证码的key
const captchaImg = ref() // 验证码图片const formState = reactive({username: '',password: '',captcha: '',
});// 点击登录
const onFinish = data => {console.log('Success:', data);axios({method: "post",url: `/api/auth/user/login`,data: {username: data.username,password: data.password,}}).then(resp => {console.log("登录成功", resp.data)})};onMounted(async () => {const captcha = await api.getCaptcha()console.log("验证码信息:", captcha)
})

渲染验证码图片

获取地址:

onMounted(async () => {const captcha = await api.getCaptcha()console.log("验证码信息:", captcha)captchaKey.value = captcha.keycaptchaImg.value = captcha.img
})

渲染图片:

<img :src=" 'data:image/png;base64,' + captchaImg"style="width: 100%; height: 50px; margin-top: 10px">

成功渲染验证码。
在这里插入图片描述

要实现的

  • 1、点击切换验证码
  • 2、1分钟后自动切换验证码

这篇关于zdppy+vue3+onlyoffice文档管理系统实战 20240831上课笔记 继续完善登录功能的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125911

相关文章

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Mybatis 传参与排序模糊查询功能实现

《Mybatis传参与排序模糊查询功能实现》:本文主要介绍Mybatis传参与排序模糊查询功能实现,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、#{ }和${ }传参的区别二、排序三、like查询四、数据库连接池五、mysql 开发企业规范一、#{ }和${ }传参的

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

CSS Padding 和 Margin 区别全解析

《CSSPadding和Margin区别全解析》CSS中的padding和margin是两个非常基础且重要的属性,它们用于控制元素周围的空白区域,本文将详细介绍padding和... 目录css Padding 和 Margin 全解析1. Padding: 内边距2. Margin: 外边距3. Padd

CSS will-change 属性示例详解

《CSSwill-change属性示例详解》will-change是一个CSS属性,用于告诉浏览器某个元素在未来可能会发生哪些变化,本文给大家介绍CSSwill-change属性详解,感... will-change 是一个 css 属性,用于告诉浏览器某个元素在未来可能会发生哪些变化。这可以帮助浏览器优化

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

Python将博客内容html导出为Markdown格式

《Python将博客内容html导出为Markdown格式》Python将博客内容html导出为Markdown格式,通过博客url地址抓取文章,分析并提取出文章标题和内容,将内容构建成html,再转... 目录一、为什么要搞?二、准备如何搞?三、说搞咱就搞!抓取文章提取内容构建html转存markdown

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目