Vue登錄功能實(shí)現(xiàn)
寫在前面
vue文件最后要空一行,不然會(huì)報(bào)錯(cuò),真的奇葩…
登錄概述
登錄業(yè)務(wù)流程
1.在登錄頁面輸入用戶名和密碼
2.調(diào)用后臺(tái)接口進(jìn)行驗(yàn)證
3.通過驗(yàn)證之后,根據(jù)后臺(tái)得響應(yīng)狀態(tài)跳轉(zhuǎn)到項(xiàng)目主頁
登錄業(yè)務(wù)的相關(guān)技術(shù)點(diǎn)
http是無狀態(tài)的通過cookie在客戶端記錄狀態(tài)通過session在服務(wù)器端記錄狀態(tài)通過token方式維持狀態(tài)
這里要清楚哦!
登錄—token原理分析
1.登錄頁面輸入用戶名和密碼進(jìn)行登錄
2.服務(wù)器驗(yàn)證通過之后生成該用戶的token并返回
3.客戶端存儲(chǔ)該token
4.后續(xù)所有的請(qǐng)求都攜帶該token發(fā)送請(qǐng)求
5.服務(wù)器端驗(yàn)證token是否通過
登錄功能實(shí)現(xiàn)
登錄頁面的布局
通過Element-UI組件實(shí)現(xiàn)布局
- el-form
- el-form-item
- el-input
- el-button
- 字體圖標(biāo)
在vscode打開終端ctrl+~
git status
查看當(dāng)前git狀態(tài)
git checkout -b login
創(chuàng)建一個(gè)新的分支叫l(wèi)ogin
git branch
切換分支
在vue ui中啟動(dòng)!
終端指令npm run serve
也可以運(yùn)行!
在components文件下創(chuàng)建一個(gè)vue文件
import Vue from 'vue' import VueRouter from 'vue-router' import login from './components/login.vue' Vue.use(VueRouter) const routes = [ {path:'/login',component:login} ] const router = new VueRouter({ routes }) export default router
配置路由(并添加路由重定向)
const router = new VueRouter({ routes: [ { path: '/', redirect: '/login' }, { path: '/login', component: login } ] })
一定要注意空格,不然會(huì)報(bào)錯(cuò),可惡??!
頁面編寫
先給一個(gè)全局樣式表
/* 全局樣式表 */ html, body, #app{ height: 100%; margin: 0; padding: 0; }
并在main.js中導(dǎo)入
import './assets/css/global.css'
完成登錄框居中
注意:translate 進(jìn)行移動(dòng),完成真正的居中
.login_box{ width: 450px; height: 300px; background-color: #fff; position: absolute; left: 50%; top: 50%; transform: translate(-50%,-50%); }
添加一個(gè)登錄圖標(biāo)
.avatar_box{ height: 130px; width: 130px; border: 1px solid #eee; border-radius: 50%; padding: 10px; box-shadow: 0px 0px 10px #ddd; position: absolute; left: 50%; transform: translate(-50%,-50%); background-color: #fff; img{ width: 100%; height: 100%; border-radius: 50%; background-color: #eee; } }
登錄表單的布局
通過Element-UI組件實(shí)現(xiàn)布局
- el-form
- el-form-item
- el-input
- el-button
- 字體圖標(biāo)
elements組件庫網(wǎng)頁
在網(wǎng)站里面可以找到一些可以使用的基礎(chǔ)模板代碼
導(dǎo)入組件
import Vue from 'vue' import { Button, Form, FormItem, Input } from 'element-ui'//分開import會(huì)報(bào)錯(cuò) Vue.use(Button) Vue.use(Form) Vue.use(FormItem) Vue.use(Input)
中間form和button都是直接到上面的組件庫里面去找的
中間一些代碼不貼了,比較枯燥呀
特別地,我們的小圖標(biāo)是從阿里的icon庫里面下載的
具體用法見以前寫得一篇博客
阿里巴巴icon圖標(biāo)盡在掌握(前端如何引入icon庫,美麗圖標(biāo)隨你處置T.T)
登錄表單的數(shù)據(jù)綁定
1.:model=“l(fā)oginForm” 綁定一個(gè)表單
2.在form-item中用v-model雙向綁定數(shù)據(jù)對(duì)象
3.在export default中data() return表單數(shù)據(jù)
登錄表單的驗(yàn)證規(guī)則
1.:rules="ruleForm"綁定一個(gè)規(guī)則
2.在form-item中用prop屬性設(shè)置為需要校驗(yàn)的字段名
// 這是表單的驗(yàn)證規(guī)則對(duì)象 loginFormRules: { // 驗(yàn)證用戶名是否合法 username: [ { required: true, message: '請(qǐng)輸入登錄名稱', trigger: 'blur' }, { min: 3, max: 10, message: '長度在 3 到 10 個(gè)字符', trigger: 'blur' } ], // 驗(yàn)證密碼是否合法 password: [ { required: true, message: '請(qǐng)輸入登錄密碼', trigger: 'blur' }, { min: 6, max: 15, message: '長度在 6 到 15 個(gè)字符', trigger: 'blur' } ] }
登錄表單的重置
1.在el-form中添加ref引用名稱,以便獲取表單
2.在方法中添加方法,用this.$refs.loginFormRef.resetFields()
來重置表單,注意表單的值會(huì)變?yōu)閐ata里面設(shè)置的初值
登錄預(yù)驗(yàn)證
1.同樣的this.$refs.loginFormRef.validate()
2.配置axios
import axios from 'axios' // 配置請(qǐng)求的根路徑 axios.defaults.baseURL = 'https://127.0.0.1:8888/api/private/v1/' Vue.prototype.$http = axios
3.如下獲取查詢的結(jié)果
使用async 和await要獲取返回結(jié)果
this.$refs.loginFormRef.validate(async valid => { if (!valid) return const { data: res } = await this.$http.post('login', this.loginForm) console.log(res) if (res.meta.status !== 200) return console.log('登錄失敗') console.log('登錄成功') })
登錄組件配置彈窗提示
1.在element.js中引入message并掛載到vue上
Vue.prototype.$message = Message // 掛載到了Vue上
2.直接調(diào)用this.$message.error(‘登錄失?。?)
登錄成功后的行為
1.將登錄之后的token,保存到客戶端的sessionStorage中
1.項(xiàng)目中除了登錄之外的其他API接口,必須在登錄之后才能訪問
2.token只應(yīng)在當(dāng)前網(wǎng)站打開期間生效,所以將token保存在sessionStorage中
將這個(gè)token存儲(chǔ)到了會(huì)話存儲(chǔ)中
2.通過編程式導(dǎo)航跳轉(zhuǎn)到后臺(tái)主頁,路由地址是/home
window.sessionStorage.setItem('token', 'res.data.token')//保存token 這里是亂保存的固定值 this.$router.push('/home') //跳轉(zhuǎn)路由,進(jìn)入下一個(gè)頁面
到此這篇關(guān)于Vue登錄功能實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Vue 登錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VUE2實(shí)現(xiàn)事件驅(qū)動(dòng)彈窗示例
本篇文章主要介紹了VUE2實(shí)現(xiàn)事件驅(qū)動(dòng)彈窗示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-10-10vue實(shí)現(xiàn)盒子內(nèi)拖動(dòng)方塊移動(dòng)的示例代碼
這篇文章主要給大家介紹了如何通過vue實(shí)現(xiàn)盒子內(nèi)拖動(dòng)方塊移動(dòng),文章通過代碼示例講解的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴可以參考閱讀本文2023-08-08vue?3.0使用element-plus按需導(dǎo)入方法以及報(bào)錯(cuò)解決
Vue3是不能直接使用Element-ui了,需要換成Element-plus,下面這篇文章主要給大家介紹了關(guān)于vue?3.0使用element-plus按需導(dǎo)入方法以及報(bào)錯(cuò)解決的相關(guān)資料,需要的朋友可以參考下2024-02-02vue項(xiàng)目實(shí)現(xiàn)背景顏色以及下劃線從左到右漸變動(dòng)畫效果
這篇文章主要介紹了vue項(xiàng)目實(shí)現(xiàn)背景顏色以及下劃線從左到右漸變動(dòng)畫效果,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08關(guān)于Vue.js一些問題和思考學(xué)習(xí)筆記(2)
這篇文章主要為大家分享了關(guān)于Vue.js一些問題和思考的學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12