Vue登入功能實現
目錄
- 寫在前面
- 登入概述
- 登入業務流程
- 登入業務的相關技術點
- 登入—token原理分析
- 登入功能實現
- 登入表單的佈局
- 登入表單的資料繫結
- 登入表單的驗證規則
- 登入表單的重置
- 登入預驗證
- 登入元件配置彈窗提示
寫在前面
檔案最後要空一行,不然會報錯,真的奇葩…
登入概述
登入業務流程
1.在登入頁面輸入使用者名稱和密碼
2.呼叫後臺介面進行驗證
3.通過驗證之後,根據後臺得響應狀態跳轉到專案主頁
登入業務的相關技術點
http是無狀態的通過cookie在客戶端記錄狀態通過session在伺服器端記錄狀態通過token方式維持狀態
這裡要清楚哦!
登入—token原理分析
1.登入頁面輸入使用者名稱和密碼進行登入
2.伺服器驗證通過之後生成該使用者的token並返回
3.客戶端儲存該token
4.後續所有的請求都攜帶該token傳送請求
5.伺服器端驗證token是否通過
登入功能實現
登入頁面的佈局
通過Element-UI元件實現佈局
- el-form
- el-form-item
- el-input
- el-button
- 字型圖示
在vscode開啟終端ctrl+~
git status
檢視當前git狀態
git checkout -b login
建立一個新的分支叫login
git branch
切換分支
在vue ui中啟動!
終端指令npm run serve
也可以執行!
在components檔案下建立一個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({ routNebkOes }) export dhttp://www.cppcns.comefault router
配置路由(並新增路由重定向)
const router = new VueRouter({ routes: [ { path: '/',rewww.cppcns.comdirect: '/login' },{ path: '/login',component: login } ] })
一定要注意空格,不然會報錯,可惡啊!
頁面編寫
先給一個全域性樣式表
/* 全域性樣式表 */ html,body,#app{ height: 100%; margin: 0; padding: 0; }
並在main.中匯入
import './assets//global.css'
完成登入框居中
注意:translate 進行移動,完成真正的居中
.login_box{
width: 450px;
height: 300px;
background-color: #fff;
position: absolute;
left: 50%;
top: 50%;
transform: thttp://www.cppcns.comranslate(-50%,-50%);
}
新增一個登入圖示
.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元件實現佈局
- el-form
- el-form-item
- el-input
- el-button
- 字型圖示
elements元件庫
在裡面可以找到一些可以使用的基礎模板程式碼
匯入元件
import Vue from 'vue' import { Button,Form,FormItem,Input } from 'element-ui'//分開import會報錯 Vue.use(Button) Vue.use(Form) Vue.use(FormItem) Vue.use(Input)
中間form和button都是直接到上面的元件庫裡面去找的
中間一些程式碼不貼了,比較枯燥呀
特別地,我們的小圖示是從阿里的icon庫裡面下載的
具體用法見以前寫得一篇部落格
阿里巴巴icon圖示盡在掌握(前端如何引入icon庫,美麗圖示隨你處置T.T)
登入表單的資料繫結
1.:model=“loginForm” 繫結一個表單
2.在form-item中用v-model雙向繫結資料物件
3.在export default中data() return表單資料
登入表單的驗證規則
1.:rules="ruleForm"繫結一個規則
2.在form-item中用prop屬性設定為需要校驗的欄位名
// 這是表單的驗證規則物件 loginFormRules: { // 驗證使用者名稱是否合法 username: [ { required: true,message: '請輸入登入名稱',trigger: 'blur' },{ min: 3,max: 10,message: '長度在 3 到 10 個字元',trigger: 'blur' } ],// 驗證密碼是否合法 password: [ { required: true,message: '請輸入登入密碼',{ min: 6,max: 15,message: '長度在 6 到 15 個字元',trigger: 'blur' } ] }
登入表單的重置
1.在el-form中新增ref引用名稱,以便獲取表單
2.在方法中新增方法,用this.$refs.loginFormRef.resetFields()
來重置表單,注意表單的值會變為data裡面設定的初值
登入預驗證
1.同樣的this.$refs.loginFormRef.validate()
2.配置axios
import axios from 'axios' // 配置請求的根路徑 axios.defaults.baseURL = 'https://127.0.0.1:8888/api/private/v1/' Vue.prototype.$http = axios
3.如下獲取查詢的結果
使用async 和await要獲取返回結果
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.直接呼叫this.$message.error(‘登入失敗!')
登入成功後的行為
1.將登入之後的token,儲存到客戶端的sessionStorage中
1.專案中除了登入之外的其他API介面,必須在登入之後才能訪問
2.token只應在當前網站開啟期間生效,所以將token儲存在sessionStorage中
將這個token儲存到了會話儲存中
2.通過式導航跳轉到後臺主頁,路由地址是/home
window.sessionStorage.setItem('token','res.data.token')//儲存token 這裡是亂儲存的固定值 this.$router.push('/home') //跳轉路由,進入下一個頁面
到此這篇關於Vue登入功能實現的文章就介紹到這了,更多相關Vue 登入內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!