vue实现简单的登入功能

本文介绍了如何在Vue项目中实现简单的登录功能,包括HTML部分、Vuex状态管理、Element-UI的消息提示和弹框组件封装,以及Axios的二次封装和请求接口的封装。适合前端初学者了解和学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

html部分

<el-form
      :model="dataForm"
      :rules="dataRule"
      ref="dataForm"
      status-icon
    >
      <el-form-item prop="no">
        <el-input v-model="dataForm.no" placeholder="帐号"></el-input>
      </el-form-item>

      <el-form-item prop="password">
        <el-input
          v-model="dataForm.password"
          type="password"
          placeholder="密码"
          show-password
        ></el-input>
      </el-form-item>

     

      <el-form-item>
        <el-button style="width:100%" type="primary" @click="submitForm('dataForm')"
          >安全登录</el-button
        >
        
      </el-form-item>

     
    </el-form>

vuex部分

import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
    state: {
        // 从session中获取token,没有则为空
        Authorization: localStorage.getItem('Authorization') ? 	  localStorage.getItem('Authorization') : '',
     
    },
    mutations: {
        // 修改token(该消息来自登录页面)
        changeToken(state, token) {
            state.Authorization = token;
            localStorage.setItem('Authorization', token)
        } 
    }, 
})

封装跳出提示信息 (提示登录成功或者失败信息 )简单封装element-ui中的消息提示Message和弹框组件 MessageBox_ananzhangwei的博客-优快云博客_element message封装

axios的二次封装

创建http.js

import axios from 'axios'
import router from '../router/index'
function myAxios(config){
  //创建axios实例
    const service=axios.create({
        baseURL: 'http://10.128.193.156',//后端的域名
        withCredentials:false,
        // 配置请求头
        headers: {
            get: {
              'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
              // 在开发中,一般还需要单点登录或者其他功能的通用请求头,可以一并配置进来
              
            },
            post: {
              'Content-Type': 'application/json;charset=utf-8'
              // 在开发中,一般还需要单点登录或者其他功能的通用请求头,可以一并配置进来
            },
            
            
      }, 
    })

   
   
//     //请求拦截
    service.interceptors.request.use(config=>{
      
      
      //....后续根据实际情况去配置
  
      return config
    },err =>Promise.reject(err))


     service.interceptors.response.use(
       res =>{
       
           return res.data
         
       },
       ()=>{
        
       alert('请求错误,请重试')
       }
      
     )
     

    return service(config)
 }
export default myAxios;

请求接口的封装

创建api.js

import myAxios from "./http";

 //登入
export  function login(paramsList){
    return myAxios({
        url:'/user/login',
        method:'post',
        data:paramsList
    })
}

最后在script里面引用上面封装好的代码

<script>
//引入登入请求
import {login} from '../../.././request/api'
export default {
  data() {
    return {
      //数据
      dataForm: {
        no:"",
        password: "",
      },
      

     //datarule用于简单的表单验证
      dataRule: {
        no: [
          { required: true, message: "帐号不能为空", trigger: "blur" },
        ],
        password: [
          { required: true, message: "密码不能为空", trigger: "blur" },
        ],
        captcha: [
          { required: true, message: "验证码不能为空", trigger: "blur" },
        ],
      },
     
    };
  },
  
  methods: {
    // 提交表单跳转首页
    submitForm(formName) {
      this.$refs[formName].validate((valid) =>{
        //表单验证通过发送请求
         if(valid){
             let data=this.dataForm
             login(data).then(res=>
             
             {    
             
            console.log(res);
        

            //  提示表单提交信息
            // 并且判断验证码是否正确不正确刷新验证码
                     this.$handAlent('登录成功')
                     //保存token到vuex
                       this.$store.commit('changeToken', res.object.Authorization)
                       //保存登入人的名字
                       sessionStorage.setItem('name',res.object.name)
                          
                     
                      //跳转首页并且
                       this.$router.push({name:'msg'});
                     
                
                     
             }
            
             
             
             )
         }   
         //表单验证不通过
         else{
              //弹出信息
         this.$handAlent('填写信息错误','error')
               // 清空表单
            this.resetForm(formName);

         }
      })
   
    },
    
   

    //重置表单
     resetForm(formName) {
        this.$refs[formName].resetFields();
        
      }
   
  },

  
};
</script>

前端小白一个 有可以改进的地方希望大佬们可以指出!!!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值