平台登录页面实现(一)

news/2024/10/23 11:28:50/

在这里插入图片描述


文章目录

  • 一、实现用户名、密码、登录按钮、记住用户表单
    • 1、全局css代码定义在asserts/css/global.css
  • 二、用户名、密码、记住用户的双向绑定
  • 三、没有用户,点击注册功能实现
  • 四、实现输入用户名、密码、点击登录按钮进行登录操作
  • 五、实现表单项校验
  • 六、提交表单预验证
    • 1、在el-form标签通过ref属性,绑定一个methods中定义的方法
    • 2、在method中定义一个ref
    • 3、对表单进行预校验
  • 七、记住账号和密码
    • 1、保存token
    • 2、保存用户名
    • 3、判断是否需要记住用户的账号密码,将账号密码保存在localStorage中
    • 4、读取账号密码
    • 5、如果不需要记住账号密码将localStorage中的信息删除
  • 八、写好的登录页

一、实现用户名、密码、登录按钮、记住用户表单

<template><LoginBackVue><div class="login_box"><!-- 显示logo的地方 --><div class="log"></div><!-- 登录的表单 --><el-form><el-form-item><el-input prefix-icon="User" placeholder="请输入用户名"/></el-form-item><el-form-item><el-input prefix-icon="Lock" placeholder="请输入密码"/></el-form-item><el-form-item label="记住用户"><el-switch /></el-form-item><el-form-item><el-button color="#00608c" style="width: 100%" @click="onSubmit">登录</el-button></el-form-item></el-form></div></LoginBackVue>
</template><script>
import LoginBackVue from "@/components/LoginBack.vue";export default{components:{LoginBackVue}
}</script><style scoped>/* 设置登录框的宽高和位置居中 */.login_box{width: 500px;height:350px;margin: calc((100vh - 350px)/2) auto;text-align: center;color: white;}
</style>

1、全局css代码定义在asserts/css/global.css


/* --------------------登录页面--------------------- *//* 修改element-plus 输入框表单的样式*/
.login_box .el-input__wrapper{background: none;box-shadow: none;border-bottom: solid 1px #00608c;border-radius: 0;
}
/* 修改输入框图表样式 */
.login_box .el-input__prefix{color: #fff;font-size: 20px;
}

在这里插入图片描述
main.js中导入,全局生效
在这里插入图片描述

二、用户名、密码、记住用户的双向绑定

<template><LoginBackVue><div class="login_box"><!-- 显示logo的地方 --><div class="log"></div><!-- 登录的表单 --><el-form><el-form-item><el-input v-model="loginForm.username" prefix-icon="User" placeholder="请输入用户名"/></el-form-item><el-form-item><el-input type="password" v-model="loginForm.password" prefix-icon="Lock" placeholder="请输入密码"/></el-form-item><el-form-item label="记住用户"><el-switch  v-model="loginForm.status" /></el-form-item><el-form-item><el-button color="#00608c" style="width: 100%" @click="onSubmit">登录</el-button></el-form-item></el-form></div></LoginBackVue>
</template><script>
import LoginBackVue from "@/components/LoginBack.vue";export default{data(){return{loginForm:{username:"",password:"",status:false}}},components:{LoginBackVue}
}</script><style scoped>/* 设置登录框的宽高和位置居中 */.login_box{width: 500px;height:350px;margin: calc((100vh - 350px)/2) auto;text-align: center;color: white;}</style>

在这里插入图片描述

三、没有用户,点击注册功能实现

<template><LoginBackVue><div class="login_box"><!-- 显示logo的地方 --><div class="log"></div><!-- 登录的表单 --><el-form><el-form-item><el-input v-model="loginForm.username" prefix-icon="User" placeholder="请输入用户名"/></el-form-item><el-form-item><el-input type="password" v-model="loginForm.password" prefix-icon="Lock" placeholder="请输入密码"/></el-form-item><el-form-item label="记住用户"><el-switch  v-model="loginForm.status" /></el-form-item><el-form-item><el-button color="#00608c" style="width: 100%" @click="onSubmit">登录</el-button></el-form-item></el-form><div class="isregister">没有账号?<span @click="register">点击注册</span></div></div></LoginBackVue>
</template><script>
import LoginBackVue from "@/components/LoginBack.vue";export default{data(){return{loginForm:{username:"",password:"",status:false}}},methods:{register(){this.$message({type:'warning',message:"平台未开放注册功能"})}},components:{LoginBackVue}
}</script><style scoped>/* 设置登录框的宽高和位置居中 */.login_box{width: 500px;height:350px;margin: calc((100vh - 350px)/2) auto;text-align: center;color: white;}.isregister{width: 100%;text-align: left;}.isregister span{color: turquoise;cursor: pointer;}</style>

四、实现输入用户名、密码、点击登录按钮进行登录操作

1、表单输入框,绑定输入的数据
2、点击登录按钮,发送请求完成登录

<template><LoginBackVue><div class="login_box"><!-- 显示logo的地方 --><div class="log"></div><!-- 登录的表单 --><el-form><el-form-item><el-input v-model="loginForm.username" prefix-icon="User" placeholder="请输入用户名"/></el-form-item><el-form-item><el-input type="password" v-model="loginForm.password" prefix-icon="Lock" placeholder="请输入密码"/></el-form-item><el-form-item label="记住用户"><el-switch  v-model="loginForm.status" /></el-form-item><el-form-item><el-button color="#00608c" style="width: 100%" @click="submitLogin">登录</el-button></el-form-item></el-form><div class="isregister">没有账号?<span @click="register">点击注册</span></div></div></LoginBackVue>
</template><script>
import LoginBackVue from "@/components/LoginBack.vue";export default{data(){return{loginForm:{username:"",password:"",status:false}}},methods:{// 点击登录的方法async submitLogin(){const response=await this.$api.login(this.loginForm)if (response.status===200){// 提示登录成功this.$message({type:"success",message:"登录成功"})// 页面跳转(后面加)this.$router.push({"name":"home"})}},// 点击注册register(){this.$message({type:'warning',message:"平台未开放注册功能"})}},components:{LoginBackVue}
}</script><style scoped>/* 设置登录框的宽高和位置居中 */.login_box{width: 500px;height:350px;margin: calc((100vh - 350px)/2) auto;text-align: center;color: white;}.isregister{width: 100%;text-align: left;}.isregister span{color: turquoise;cursor: pointer;}</style>

在这里插入图片描述

五、实现表单项校验

步骤:
1、在el-form标签上绑定rules属性,指定校验的规则对象
在这里插入图片描述
2、在data中定义绑定校验规则
在这里插入图片描述
3、在el-form-item标签中指定校验的字段
在这里插入图片描述
在这里插入图片描述

<template><LoginBackVue><div class="login_box"><!-- 显示logo的地方 --><div class="log"></div><!-- 登录的表单 --><el-form :rules="loginRules" :model="loginForm"><el-form-item prop="username"><el-input v-model="loginForm.username" prefix-icon="User" placeholder="请输入用户名"/></el-form-item><el-form-item prop="password"><el-input type="password" v-model="loginForm.password" prefix-icon="Lock" placeholder="请输入密码"/></el-form-item><el-form-item label="记住用户"><el-switch  v-model="loginForm.status" /></el-form-item><el-form-item><el-button color="#00608c" style="width: 100%" @click="submitLogin">登录</el-button></el-form-item></el-form><div class="isregister">没有账号?<span @click="register">点击注册</span></div></div></LoginBackVue>
</template><script>
import LoginBackVue from "@/components/LoginBack.vue";export default{data(){return{// 登录输入的数据loginForm:{username:"",password:"",status:false},// 登录表单的校验规则loginRules:{// username的校验规则username:[{required:true,message:"用户名不能为空",trigger:'blur'}],// password的校验规则password:[{required:true,message:"密码不能为空",trigger:'blur'},{min:4,max:18,message:"密码长度需要在6-18位之间",trigger:'blur'}]}}},methods:{// 点击登录的方法async submitLogin(){const response=await this.$api.login(this.loginForm)if (response.status===200){// 提示登录成功this.$message({type:"success",message:"登录成功"})// 页面跳转(后面加)this.$router.push({"name":"home"})}else{this.$message({type:"error",message:response.data})}},// 点击注册register(){this.$message({type:'warning',message:"平台未开放注册功能"})}},components:{LoginBackVue}
}</script><style scoped>/* 设置登录框的宽高和位置居中 */.login_box{width: 500px;height:350px;margin: calc((100vh - 350px)/2) auto;text-align: center;color: white;}.isregister{width: 100%;text-align: left;}.isregister span{color: turquoise;cursor: pointer;}</style>

六、提交表单预验证

vue——》全局属性$refs={}
检测页面中是否有ref属性,如果有会将ref属性添加到$refs={}
$refs={
loginRef:元素(组件)
}

1、在el-form标签通过ref属性,绑定一个methods中定义的方法

<el-form :model="loginForm" :rules="loginRules" ref="loginRef">

2、在method中定义一个ref

clickLogin(){// 对登录的表单数据进行验证this.$refs['loginRef'].validate((res)=>{if(res){this.submitLogin()}})
},

3、对表单进行预校验

methods:{clickLogin(){// 对登录的表单数据进行验证this.$refs['loginRef'].validate((res)=>{if(res){this.submitLogin()}})},// 发送请求到后端async submitLogin(){const response=await this.$api.login(this.loginForm)if(response.status===200){// 提示登录成功this.$message({type:'success',message:'登录成功'})// 页面跳转(后面加)this.$router.push({name:'index'})}else{this.$message({type:'error',message:response.data})}},register(){this.$message({type:'warning',message:'平台暂时未开放注册功能'})}
},

七、记住账号和密码

1、保存token

window.sessionStorage.setItem('token',response.data.token)

2、保存用户名

window.sessionStorage.setItem('username',response.data.username)

3、判断是否需要记住用户的账号密码,将账号密码保存在localStorage中

特别注意
需要将this.loginForm转换为json格式数据

if(this.loginForm.status){// 将账号密码转换为json字符串const uinfo=JSON.stringify(this.loginForm)// 进行编码(加密)const u=window.btoa(unescape(encodeURIComponent(uinfo)))// 存储到localStoragewindow.localStorage.setItem('uinfo:',u)
}

4、读取账号密码

created(){const uinfo=window.localStorage.getItem('uinfo')// 判断是否有账号密码if(uinfo){// 进行解密// const u= decodeURIComponent(escape(window.atob(uinfo)))// 转化位js对象,保存到loginFormthis.loginForm =JSON.parse(uinfo)}}

5、如果不需要记住账号密码将localStorage中的信息删除

window.localStorage.removeItem('uinfo')

在这里插入图片描述

八、写好的登录页

<template><LoginBackVue><div class="login_box"><!-- 显示logo的地方 --><div class="log"></div><!-- 登录的表单 --><el-form :rules="loginRules" :model="loginForm" ref="loginRef"><el-form-item prop="username"><el-input v-model="loginForm.username" prefix-icon="User" placeholder="请输入用户名"/></el-form-item><el-form-item prop="password"><el-input type="password" v-model="loginForm.password" prefix-icon="Lock" placeholder="请输入密码"/></el-form-item><el-form-item label="记住用户"><el-switch  v-model="loginForm.status" /></el-form-item><el-form-item><el-button color="#00608c" style="width: 100%" @click="clickLogin">登录</el-button></el-form-item></el-form><div class="isregister">没有账号?<span @click="register">点击注册</span></div></div></LoginBackVue>
</template><script>
import LoginBackVue from "@/components/LoginBack.vue";export default{data(){return{// 登录输入的数据loginForm:{username:"",password:"",status:false},// 登录表单的校验规则loginRules:{// username的校验规则username:[{required:true,message:"用户名不能为空",trigger:'blur'}],// password的校验规则password:[{required:true,message:"密码不能为空",trigger:'blur'},{min:4,max:18,message:"密码长度需要在6-18位之间",trigger:'blur'}]}}},methods:{clickLogin(){// 对登录的表单数据进行校验this.$refs['loginRef'].validate((res) =>{if(res){this.submitLogin()}})},// 点击登录的方法async submitLogin(){const response=await this.$api.login(this.loginForm)if (response.status===200){// 保存token,用户名window.sessionStorage.setItem('token',response.data.token)window.sessionStorage.setItem('uname',response.data.username)// 判断是否需要记住用户名和密码if(this.loginForm.status){//将账号密码信息保存到localStorage中// 将账号密码转换为json字符串const uinfo=JSON.stringify(this.loginForm)// 存储到localStoragewindow.localStorage.setItem('uinfo',uinfo)}else{window.localStorage.removeItem('uinfo')}// 提示登录成功this.$message({type:"success",message:"登录成功"})// 页面跳转(后面加)this.$router.push({"name":"index"})}else{this.$message({type:"error",message:response.data})}},// 点击注册register(){this.$message({type:'warning',message:"平台未开放注册功能"})}},components:{LoginBackVue},created(){const uinfo=window.localStorage.getItem('uinfo')// 判断是否有账号密码if(uinfo){// 进行解密// const u= decodeURIComponent(escape(window.atob(uinfo)))// 转化位js对象,保存到loginFormthis.loginForm =JSON.parse(uinfo)}}
}</script><style scoped>/* 设置登录框的宽高和位置居中 */.login_box{width: 500px;height:350px;margin: calc((100vh - 350px)/2) auto;text-align: center;color: white;}.isregister{width: 100%;text-align: left;}.isregister span{color: turquoise;cursor: pointer;}</style>

http://www.ppmy.cn/news/1130741.html

相关文章

【JavaEE】锁策略

文章目录 前言1. 乐观锁和悲观锁2. 重量级锁和轻量级锁3. 自旋锁和挂起等待锁4. 公平锁和非公平锁5. 可重入锁和非可重入锁6. 读写锁Java synchronized 分别对应哪些锁策略1. 乐观锁和悲观锁2. 重量级锁和轻量级锁3. 自旋锁和挂起等待锁4. 公平锁和非公平锁5. 可重入锁和非可重…

React高手必学:自定义Hooks,轻松飞升技术巅峰!

React高手必学&#xff1a;自定义Hooks&#xff0c;轻松飞升技术巅峰&#xff01; React自定义Hooks是一项强大而实用的功能&#xff0c;它可以帮助开发者将逻辑和状态从组件中抽离出来&#xff0c;提高组件的可复用性和逻辑抽象能力。本论文将介绍React自定义Hooks的定义、使…

【聊天系统的优化】RPC方式的优化

RPC方式的优化 聊天系统的中RPC的选择Jsonprotobufmsgpack 聊天系统的中RPC的选择 在RPC方式中&#xff0c;常用的三种方式&#xff1a;Json&#xff0c;protobuf&#xff0c;Msgback 设定一个简单的加和服务&#xff0c;客户端发送一个list给服务端&#xff0c;需要将list的…

如何在PIL图像和PyTorch Tensor之间进行相互转换,使用pytorch进行PIL和tensor之间的数据转换

目录 引言PIL简介PyTorch和Torchvision简介PIL转换为TensorTensor转换为PIL实例代码和解释结论参考文献 &#x1f4dd; 引言 在计算机视觉领域&#xff0c;使用图像处理库对图像进行预处理是非常常见的。其中&#xff0c;Python Imaging Library&#xff08;PIL&#xff09;以…

视频增强修复工具Topaz Video AI mac中文版安装教程

Topaz Video AI mac是一款使用人工智能技术对视频进行增强和修复的软件。它可以自动降噪、去除锐化、减少压缩失真、提高清晰度等等。Topaz Video AI可以处理各种类型的视频&#xff0c;包括低分辨率视频、老旧影片、手机录制的视频等等。 使用Topaz Video AI非常简单&#xff…

「网页开发|前端开发|Vue」10 vuex模块化:将数据划分成不同modules分别管理

本文主要介绍如何使用vuex的modules将状态数据根据不同模块进行划分并分别管理以及如何使用mapGetters快速将状态管理中的数据导入成local变量。 文章目录 本系列前文传送门一、场景说明二、使用modules划分不同模块三、使用Getters获取状态管理数据Getter传参mapGetters 辅助…

华为云云耀云服务器L实例评测 | 实例评测使用之体验评测:华为云云耀云服务器安全加固/防范黑客攻击

华为云云耀云服务器L实例评测 &#xff5c; 实例评测使用之体验评测&#xff1a;华为云云耀云服务器安全加固/防范黑客攻击 介绍华为云云耀云服务器 华为云云耀云服务器 &#xff08;目前已经全新升级为 华为云云耀云服务器L实例&#xff09; 华为云云耀云服务器是什么华为云云…

毛玻璃态登录表单

效果展示 页面结构组成 通过上述的效果展示可以看出如下几个效果 底部背景有三个色块并且效果是毛玻璃效果登录表单是毛玻璃效果登录表单的周围的小方块也是有毛玻璃效果并且与登录表单有层次效果 CSS3 知识点 filter 属性backdrop-filter 属性绝对定位属性动画属性 底部背…