電商後臺管理系統——登入功能
標題:電商後臺管理系統——登入功能
實現登入功能
A.登入狀態保持
1.如果伺服器和客戶端同源,建議可以使用cookie或者session來保持登入狀態
2.如果客戶端和伺服器跨域了,建議使用token進行維持登入狀態。
涉及知識點:【跨域解決方案】【token 原理分析 】【本地儲存區別】
B.登入邏輯:
1.在登入頁面輸入賬號和密碼進行登入,將資料傳送給伺服器,伺服器返回登入的結果,登入成功則返回資料中帶有token
2.客戶端得到token並進行本地儲存【為什麼是session】,後續的請求都需要將此token傳送給伺服器,伺服器會驗證token以保證使用者身份。(main.js中配置axios->請求頭中新增token)
實現過程
1.建立components資料夾並新建Login.vue元件
新增template,script,style標籤;//style標籤中【scope原理?】
<template>
<div class="login_container">
</div>
</template>
<script>
export default {
}
</script>
//scoped可以防止元件之間的樣式衝突,沒有scoped則樣式是全域性的
<style lang="less" scoped>
.login_container {
background-color: #2b5b6b;
height: 100%;
}
</style>
2.在router.js中匯入元件並設定規則
redirect:重定位
const router = new Router({
routes: [
{ path: '/', redirect: '/login' },
{ path: '/login', component: Login }
]
})
A.頁面結構
1.div根元素login_container高度100%佈滿頁面
el-form 元件使用說明:
- ref="LoginFormRef"表示表單的引用(例項) 在傳送請求時有用
- el-form-item 的 prop 屬性設定為需校驗的欄位名
prop的值指向的是校驗規則
- :model="ruleForm"用於聯絡表單項
1.3.使用字型圖示:
- 1.fonts資料夾複製到assets
- 2.開啟demo_symbol演示文件
- 3.main.js中匯入字型圖表 import ‘./assets/fonts/iconfont.css’
- 4.參考元件庫帶 icon 的輸入框屬性方式prefix-icon=“el-icon-search”
- 5.使用第三方圖示的類名user(#icon-user)替換prefix-icon=“iconfont icon-user”
/*******/
<div class="login_container"
<div class="avatar_box"> <!-- 頭像部分 -->
<img
<el-form <!-- 登入表單區域 -->
<el-form-item
<el-input
<el-form-item
<el-input
<el-form-item
<el-button
<el-button
/*******/
<template>
<div class="login_container">
<div class="login_box">
<!-- 頭像部分 -->
<div class="avatar_box">
<img src="../assets/logo.png" alt="" />
</div>
<!-- 登入表單區域 -->
<el-form
:model="loginForm"
:rules="loginFormRules"
ref="loginFormRef"
label-width="0px"
class="login_form"
>
<el-form-item prop="username">
<el-input
prefix-icon="iconfont icon-user"
v-model="loginForm.username"
></el-input>
</el-form-item>
<el-form-item prop="password">
<el-input
type="password"
prefix-icon="iconfont icon-3702mima"
v-model="loginForm.password"
></el-input>
</el-form-item>
<el-form-item class="btns">
<el-button type="primary" @click="login">登入</el-button>
<el-button @click="resetLoginForm" type="info">重置</el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
export default {
data() {
return {
// 這是登入表單的資料繫結物件
loginForm: {
username: 'admin',
password: '123456'
},
// 這是表單的驗證規則物件
loginFormRules: {
// 驗證使用者名稱是否合法
username: [
{ required: true, message: '請輸入登入名稱', trigger: 'blur' },
{ min: 3, max: 10, message: '長度在 3 到 10 個字元', trigger: 'blur' }
],
// 驗證密碼是否合法
password: [
{ required: true, message: '請輸入登入密碼', trigger: 'blur' },
{ min: 6, max: 15, message: '長度在 6 到 15 個字元', trigger: 'blur' }
]
}
}
},
......
B.功能邏輯:
1.登入、重置:
結構:<el-button type=“primary” @click=“login”>登入
<el-button @click=“resetLoginForm” type=“info”>重置
methods:
使用元件中自帶的方法:
在登入的回撥函式中傳送請求:【為什麼是sessionStorage 而不是localStorage 】
// 1. 將登入成功之後的 token,儲存到客戶端的 sessionStorage 中
// 1.1 專案中出了登入之外的其他API介面,必須在登入之後才能訪問
// 1.2 token 只應在當前網站開啟期間生效,所以將 token 儲存在 sessionStorage 中
window.sessionStorage.setItem(‘token’, res.data.token)
2.路由跳轉this.$router.push(’/home’)【路由導航】
login() {
this.$refs.loginFormRef.validate(async valid => {
// console.log(this)
// console.log(valid)
if (!valid) return
const { data: res } = await this.$http.post('login', this.loginForm)
if (res.meta.status !== 200) return this.$message.error('登入失敗!')
this.$message.success('登入成功')
window.sessionStorage.setItem('token', res.data.token)
this.$router.push('/home')
})
},
resetLoginForm() {
// console.log('reset')
this.$refs.loginFormRef.resetFields()
}
C.樣式
0.定義全域性樣式,在mian.js中引入
import ‘./assets/css/global.css’
html,
body,
#app {
height: 100%;
margin: 0;
padding: 0;
min-width: 1366px;
}
......
1.登入頁面樣式
- 1.1.圖示居中偏上,img設定border-radius: 50%;
- 1.2.表單元件設定為box-sizing: border-box;按鈕設定flex佈局實現向右對齊justify-content: flex-end;
- 1.3 login_box居中設定項:
設定寬高;絕對定位,偏移百分比;移動transform: translate(-50%, -50%);
- 1.4 頭像avatar_box 相對login_box的上方居中設定:
<style lang="less" scoped>
.login_container {
background-color: #2b5b6b;
height: 100%;
}
.login_box {
width: 450px;
height: 300px;
background-color: #fff;
border-radius: 3px;
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
.avatar_box {
height: 130px;
width: 130px;
border: 1px solid #eee;
border-radius: 50%;
box-shadow: 0 0 10px #ddd;
padding: 10px;
position: absolute;
left: 50%;
transform: translate(-50%, -50%);
background-color: #fff;
img {
width: 100%;
height: 100%;
border-radius: 50%;
background-color: #eee;
}
}
.login_form {
position: absolute;
bottom: 0;
width: 100%;
padding: 0 20px;
box-sizing: border-box;
.btns {
display: flex;
justify-content: flex-end;
}
}
}
</style>
相關文章
- 使用Vue搭建電商後臺管理系統的注意點<登入頁>Vue
- 使用Vue搭建電商後臺管理系統Vue
- 小程式電商系統後臺功能詳解
- 標題:電商後臺管理系統——資料統計
- 電商發退貨後臺管理系統專案需求
- smdms超市訂單管理系統之登入功能
- 使用Vue搭建電商後臺管理系統的注意點<首頁>Vue
- 基於Vue和Node.js的電商後臺管理系統VueNode.js
- 使用 Laravel5.7 許可權管理系統後臺及前後臺使用者登入Laravel
- 後臺管理系統
- 跨境電商ERP管理系統有哪些常見功能
- 實現後臺管理系統的操作日誌功能
- 使用Vue搭建電商後臺管理系統--有關axios的配置問題VueiOS
- 電商後臺系統產品邏輯全解析
- LaraCMS 後臺管理系統ACM
- Thinkphp後臺管理系統PHP
- AlphaCms後臺管理系統ACM
- ITKEE後臺管理系統
- react 高效高質量搭建後臺系統 系列 —— 登入React
- 電商管理系統的作用?好用的電商管理系統有哪些特點?
- 網站後臺管理系統網站
- adminkit 後臺管理系統模型模型
- [提問交流]請問如何限制前臺帳號登入後臺系統?
- Linux作業系統登入留痕功能Linux作業系統
- vue-element-admin後臺 登入時 [記住我] 功能Vue
- 深入Vue後臺管理開發之登入驗證Vue
- Laravel5.6 實現後臺管理登入(自定義使用者表登入)Laravel
- vue後臺管理系統程式碼Vue
- ThinkPHP5.0後臺管理系統PHP
- LaraCMS 後臺管理系統 - 小程式ACM
- Jsp+SSH+mysql實現的web網上商場系統(前臺/後臺 功能:商品管理、購物車管理、訂單管理、使用者管理)JSMySqlWeb
- Laravel-admin 碼的電子商務後臺系統 (小白看)Laravel
- 啟用系統登入失敗處理功能
- 跨境電商綜合平臺系統
- 電商後臺 2020.01.25~2020.01.31
- 後臺管理系統之詳解(一)
- 後臺管理系統vue.js路由Vue.js路由
- 微商雲倉管理系統開發功能搭建