衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Vue實現登錄功能

jf_96884364 ? 來源:jf_96884364 ? 作者:jf_96884364 ? 2023-01-13 10:43 ? 次閱讀

代碼地址:https://github.com/Snowstorm0/vue-login-mock

創建項目

打開cmd,輸入ui命令:

vue ui

若沒有反應,可能是版本太低,需要卸載后重裝:

npm uninstall vue-cli -g   #卸載
npm install @vue/cli -g    #安裝

執行ui命令成功后,會出現提示:

Starting GUI... Ready on http://localhost:8000

并會自動打開頁面:

創建名為SpringAndVue-vue的項目,預設選擇“手動”;功能開啟 Babel、Router、Vuex、Linter/Formatter;配置選擇“ESLint with error prevention only”;版本建議使用 “vue2.0”。創建新項目。

通過cd進入目錄,啟動項目:

npm run serve

2 安裝插件

2.1 element-ui

打開cmd,輸入ui命令:

vue ui

在插件項搜索,并點擊安裝。

vue2.0 選擇安裝 “vue-cli-plugin-element”;vue3.0 選擇安裝 “vue-cli-plugin-element-plus”。

2.2 axios

Terminal安裝axios,每個新項目都需要安裝:

# vue-cli2.0命令
npm install axios
# vue-cli3.0命令
npm add axios

2.3 mockjs

Terminal安裝mockjs

npm install mockjs

3 添加功能

3.1 login

創建 login.vue頁面:

<template>
    <div class="loginbBody">
        <div class="loginDiv">
            <div class="login-content">
                <h1 class="login-title">用戶登錄h1>
                <el-form :model="loginForm" label-width="100px"
                         :rules="rules" ref="loginForm">
                    <el-form-item label="名字" prop="name">
                        <el-input style="width: 200px" type="text" v-model="loginForm.name"
                                  autocomplete="off" size="small">el-input>
                    el-form-item>
                    <el-form-item label="密碼" prop="password">
                        <el-input style="width: 200px" type="password" v-model="loginForm.password"
                                  show-password autocomplete="off" size="small">el-input>
                    el-form-item>
                    <el-form-item>
                        <el-button type="primary" @click="confirm">確 定el-button>
                    el-form-item>
                el-form>
            div>
        div>
    div>
template>

<script>
    export default {
        name: "login",
        data(){
            return{
                loginForm:{
                    name:'',
                    password:''
                },

                // 輸入信息長度驗證
                rules:{
                    name: [
                        { required: true, message: '請輸入用戶名', trigger: 'blur' },
                        { min: 2, max: 5, message: '用戶名長度在 2 到 5 個字符', trigger: 'blur' }
                    ],
                    password: [
                        { required: true, message: '請輸密碼', trigger: 'blur' },
                        { min: 2, max: 5, message: '密碼長度在 2 到 5 個字符', trigger: 'blur' }
                    ]
                }

            }
        },
        methods:{
            // 登錄后跳轉到主頁
            confirm(){
                this.$refs.loginForm.validate((valid) => {
                    if (valid) { //valid成功為true,失敗為false
                        //去后臺驗證用戶名密碼,并返回token
                        this.$axios.post('/login',this.loginForm).then(res=>{
                            console.log(res.data)
                            if(res.data.state==1){
                                //存儲token到本地
                                this.$store.commit("SET_TOKEN",res.data.vData.token);
                                //跳轉到主頁
                                this.$router.replace('/home');
                            }else{
                                alert('用戶名或密碼錯誤!');
                                return false;
                            }
                        });
                    } else {
                        console.log('校驗失敗');
                        return false;
                    }
                });
            }
        }
    }
script>
<style scoped >
    .loginbBody {
        width: 100%;
        height: 100%;
        background-color: #B3C0D1;
    }
    .loginDiv {
        position: absolute;
        top: 50%;
        left: 50%;
        margin-top: -200px;
        margin-left: -250px;
        width: 450px;
        height: 330px;
        background: #fff;
        border-radius: 5%;

    }
    .login-title {
        margin: 20px 0;
        text-align: center;
    }
    .login-content {
        width: 400px;
        height: 250px;
        position: absolute;
        top: 25px;
        left: 25px;
    }
style>

3.2 配置路由

在router.js中配置一級路由:

{
    path: '/login',
    name: '登錄',
    component: () =>import(/* webpackChunkName: "user" */'../views/login.vue')
   }

3.3 mockjs 模擬后臺

在沒有后端代碼的情況下,可以使用 mockjs 模擬后臺數據。

我們使用 mockjs 模擬后臺登錄驗證,并返回token。

我們設置登錄的用戶名和密碼都是admin

在 src 下新建 mock 文件夾,在 mock 文件夾中新建 mock.js ,內容如下:

//引入 npm 安裝的 mockjs
const Mock = require('mockjs')   
// 獲取 mock.Random 對象
const Random = Mock.Random;
// 登錄,此地址與login登錄地址對應
Mock.mock('/login','post', (param)=>{  
    let state=0;
    let body = JSON.parse(param.body);
    console.log(body)
    let data;
    //模擬用戶名和密碼都是 admin
    if(body.name=='admin'&&body.password=='admin'){
        state=1;
        data = Mock.mock({
            "token": "@guid()",//模擬token
            "name": "@cname",//隨機生成中文名字
        });
    }
    return{
        "state":state,
        "vData":data
    }
});

//退出
Mock.mock('/logout','post', ()=>{
    return {state:1}
});

3.4 storejs

在 src/store/index.js 中添加 Vuex.Store 的屬性:

exportdefaultnew Vuex.Store({
  state: {
    token: '',
    username: '代碼的路'
  },
  getters: {
  },
  mutations: {
    SET_TOKEN(state, token){
      state.token = token ;
      localStorage.setItem("token",token);
    },
    resetState(state){
      state.token = '';
      localStorage.clear();
  }
  },
  actions: {
  },
  modules: {
  }
})

4 功能實現

在瀏覽器輸入地址:http://localhost:8080/#/login

可以出現登錄界面:

輸入用戶名和密碼 admin,即可進入主頁:

點擊頭像出現退出按鈕,可以回到登錄界面:

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 命令
    +關注

    關注

    5

    文章

    696

    瀏覽量

    22107
  • GitHub
    +關注

    關注

    3

    文章

    473

    瀏覽量

    16564
  • vue
    vue
    +關注

    關注

    0

    文章

    58

    瀏覽量

    7894
收藏 人收藏

    評論

    相關推薦

    幾種實現vue的數據雙向綁定的方法介紹

    vue的數據雙向綁定的實現
    發表于 07-29 08:33

    vue-router的概念和用法

    vue:前端路由和vue-router
    發表于 03-06 13:28

    基于TypeScript實現Vue3.0指令組件拖拽

    最近在用vue3重構后臺的一個功能。一個彈窗組件,彈出一個表單。然后點擊提交。早上運維突然跑過來問我,為啥彈窗擋住了下邊的表格的數據,我添加的時候,都沒法對照表格來看了。你必須給我解決一下。我參考了
    發表于 11-04 06:58

    vue-cli-----vue實例中template:'<App/>是什么意思?

    哪位大神知道vue-cli-----vue實例中template:'是什么意思嗎?
    發表于 11-05 07:02

    請問鴻蒙里面怎樣實現類似vue中v-html這一功能呢?

    請問鴻蒙里面怎樣實現類似vue中v-html這一功能呢,我試了下不支持模板字符串,有的功能需要文本高亮,這時候需要對返回數據進行解析成帶標簽的字符串,
    發表于 05-30 11:46

    vue-img-cutter Vue圖片裁剪插件

    ./oschina_soft/gitee-vue-img-cutter.zip
    發表于 05-31 15:21 ?0次下載
    <b class='flag-5'>vue</b>-img-cutter <b class='flag-5'>Vue</b>圖片裁剪插件

    手動實現SpringBoot日志鏈路追蹤

    基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等
    的頭像 發表于 12-15 15:04 ?1188次閱讀

    SpringBoot 實現異步記錄復雜日志

    基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等
    發表于 12-22 10:35 ?490次閱讀

    SpringBoot+ElasticSearch實現模糊查詢功能

    基于 Spring Boot + MyBatis Plus + Vue & Element 實現的后臺管理系統 + 用戶小程序,支持 RBAC 動態權限、多租戶、數據權限、工作流、三方登錄、支付、短信、商城等
    的頭像 發表于 12-30 14:00 ?1085次閱讀

    Linux安裝Vue環境

    Linux安裝Vue環境
    的頭像 發表于 01-13 14:09 ?1002次閱讀

    Vue入門Vue的生命周期

    .生命周期 4.1生命周期是什么 Vue的生命周期, 就是Vue實例從創建到銷毀的過程.
    的頭像 發表于 02-06 16:16 ?892次閱讀
    <b class='flag-5'>Vue</b>入門<b class='flag-5'>Vue</b>的生命周期

    Vue入門之Vue定義

    Vue (讀音 /vju?/,類似于 view) 是一套用于構建用戶界面的漸進式JavaScript框架。 Vue 的核心庫只關注視圖層,也就是只處理頁面。 Vue提供的一套JS框架,通常稱為
    的頭像 發表于 02-06 16:41 ?1122次閱讀
    <b class='flag-5'>Vue</b>入門之<b class='flag-5'>Vue</b>定義

    SpringBoot+Vue實現網頁版人臉登錄、人臉識別案例解析

    Springboot,Mysql,JWT,VUE 2.X 等等技術實現,主要功能點:人臉列表CRUD,日志列表CRUD,基于自建人臉庫通過base64編碼方式存儲人臉圖片,通過調用騰訊云人臉對比API場景
    發表于 02-23 15:36 ?1106次閱讀

    在iOS中集成Vue是什么

    上一節Vue在非瀏覽器環境下的嘗試我們利用了weex在vue中的dom實現成功的在非瀏覽器環境中Vue的實例,接下來我們將Vue集成到iOS
    的頭像 發表于 03-03 09:56 ?694次閱讀
    在iOS中集成<b class='flag-5'>Vue</b>是什么

    SpringBoot+Vue實現網頁版人臉登錄、人臉識別

    技術點:Springboot,Mysql,JWT,VUE 2.X 等等技術實現,主要功能點:人臉列表CRUD,日志列表CRUD,基于自建人臉庫通過base64編碼方式存儲人臉圖片,通過調用騰訊云人臉對比API場景
    的頭像 發表于 03-07 09:27 ?1102次閱讀
    吉利百家乐官网的玩法技巧和规则 | 葡京百家乐玩法| 百家乐官网代理在线游戏可信吗网上哪家平台信誉好安全 | 丘北县| 大发888娱乐场17| 百家乐永利娱乐场开户注册| 百家乐网络视频游戏| 最好百家乐官网的玩法技巧和规则| 大发888娱乐城开户| 伟博百家乐娱乐城| 真人百家乐套红利| 百家乐路子分析| 百家乐官网款| 属兔魔羯女在哪个方位做生意| 君怡百家乐官网的玩法技巧和规则 | 百家乐平注法到| 威尼斯人娱乐城好玩吗| 百家乐官网规则博彩正网| 真人百家乐软件云南景| 百家乐官网赌缆十三式| 百家乐官网视频裸聊| 扶沟县| 百家乐官网单跳双跳| 塘沽区| 凯旋门百家乐官网技巧| 网上百家乐官网骗人的吗| 百家乐官网洗码方法| 博彩乐百家乐官网平台| 百家乐官网游戏机在哪有| 百家乐官网游戏平台有哪些哪家的口碑最好 | 百家乐官网小九梭哈| 全讯网wn888.com| pc百家乐官网模拟游戏| 通化大嘴棋牌官方下载| 威尼斯人娱乐场注册| 星空棋牌舟山| 环球国际娱乐城| 百家乐官网博彩桌出租| 百家乐官网百姓话题| 大西洋百家乐官网的玩法技巧和规则 | 誉博百家乐327589|