前端如何写后台管理系统登录验证详细流程和代码

简介: 后台管理系统是公司必备的,从前些年由于技术人员的稀有,导致后台系统非常昂贵,近些年IT行业的快速发展,使得一些中小型公司开始自己写后台,自己维护,从而获取利益的最大化。

项目前景:后台管理系统是公司必备的,从前些年由于技术人员的稀有,导致后台系统非常昂贵,近些年IT行业的快速发展,使得一些中小型公司开始自己写后台,自己维护,从而获取利益的最大化。
今天是一个简单的后台登录操作

演示效果:

image.png

一、页面布局(Vue+Element Ui)

image.png

二、登录的流程

1、调用登录接口
2、登录成功:
3、保存token
4、跳转到首页,并给出成功的提示
5、失败:给出错误提示,让用户重新登录
具体代码:
新建文件夹对axios进行封装
封装请求

import axios from "axios";

const service = axios.create({
   
   
  baseURL: "url地址",
  timeout: 3000
});

//请求拦截器
service.interceptors.request.use(
  function (config) {
   
   
    //判断如果不是登录页,必须携带token到后端,才能正常返回数据

    //判断如果不是login页,获取token,并通过请求头携带到后端
    if (config.url !== 'login') {
   
   
      const token = localStorage.getItem('token');

      //设置请求头
      config.headers['Authorization'] = token;

    }
    return config;
  },
  function(error) {
   
   
    return Promise.reject(error);
  }
);

//响应拦截器
service.interceptors.response.use(
  function(response) {
   
   
    return response;
  },
  function(error) {
   
   
    return Promise.reject(error);
  }
);

export default service;

请求接口api

import request from "./index";


export function login(data) {
   
   
  // console.log('data::',data)
  return request({
   
   
    url: "login",
    method: "POST",
    data
  });
}

在main.js中进行全局路由拦截

//全局路由拦截
router.beforeEach((to, from, next) => {
   
   
  console.log("from:", from);
  console.log("to:", to);
  if (to.meta.auth) {
   
   
    const token = localStorage.getItem('token')
    if (!token) {
   
   
      next({
   
   
        name: 'login',
        query: {
   
    redirect:to.fullPath  }
        })
    } else {
   
   
      next()
     }
  } else {
   
   
    next();
  }

})

登录页面代码

<template>
  <div class="login_wrap">
    <el-form
      class="login_form"
      label-position="right"
      label-width="80px"
      :model="userinfo"
      :rules="loginRules"
    >
      <h1>用户登录</h1>
      <el-form-item label="用户名" prop="username">
        <el-input v-model="userinfo.username"></el-input>
      </el-form-item>
      <el-form-item label="密码" prop="password">
        <el-input v-model="userinfo.password" type="password"></el-input>
      </el-form-item>
      <el-button type="primary" class="login_btn" @click.prevent="handleLogin"
        >登录</el-button
      >
    </el-form>
  </div>
</template>

<script>
//引入登录接口
import {
   
    login } from "@/http/api";
export default {
   
   
  name: "login",
  data() {
   
   
    return {
   
   
      userinfo: {
   
   
        username: "",
        password: ""
      },
      loginRules: {
   
   
        username: [
          {
   
    required: true, message: "请输入用户名", trigger: "blur" },
          {
   
    min: 5, max: 20, message: "长度在 5 到 20个字符", trigger: "blur" }
        ],
        password: [
          {
   
    required: true, message: "请输入密码", trigger: "blur" },
          {
   
    min: 5, max: 60, message: "长度在 5 到 20 个字符", trigger: "blur" }
        ]
      }
    };
  },
  methods: {
   
   
    async handleLogin() {
   
   
      /**
       * 调用登录接口
       * 成功:
       *     保存token
       *     跳转到首页,并给出成功的提示
       * 失败:给出错误提示,让用户重新登录
       */
      const res = await login(this.userinfo);
      const {
   
   
        meta: {
   
    msg, status }
      } = res.data;

      if (status === 200) {
   
   
        const {
   
    token } = res.data.data;
        localStorage.setItem("token", token);
        //记住上次没有token要访问的页面地址,如果登录成功,再返回到上次要访问到页面
        const {
   
    redirect } = this.$route.query;

        //如果直接登录,没有redirect,成功后直接跳转到home
        if (!redirect) {
   
   
          this.$router.push({
   
    name: "Home" });
        } else {
   
   
          this.$router.push({
   
    path: redirect });
        }

        this.$message({
   
   
          message: msg,
          type: "success"
        });
      } else {
   
   
        this.$message({
   
   
          message: msg,
          type: "error"
        });
      }
    }
  }
};
</script>

<style lang="scss" scoped>
.login_wrap {
   
   
  width: 100%;
  height: 100%;
  background: #072765;
}

.login_form {
   
   
  width: 40%;
  height: 260px;
  padding: 30px;
  background: #fff;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  top: 0;
  margin: auto;

  h1 {
   
   
    text-align: center;
    margin: 10px 0;
  }
}

.login_btn {
   
   
  width: 100%;
}
</style>

总结:以上是一个后台管理系统实现登录的流程思路,具体请结合API进行实现

目录
相关文章
|
17天前
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
11天前
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
107 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
9天前
|
Dart 前端开发 容器
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
14天前
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
2月前
|
人工智能 前端开发 小程序
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
2024年12月30日蜻蜓蜻蜓AI工具系统v1.0.0发布-优雅草科技本产品前端源代码已对外开源可免费商用-优雅草老八
|
17天前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
19天前
|
Dart 前端开发 架构师
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
|
10天前
|
缓存 前端开发 IDE
【06】flutter完成注册页面-密码登录-手机短信验证-找回密码相关页面-并且实现静态跳转打包demo做演示-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【06】flutter完成注册页面-密码登录-手机短信验证-找回密码相关页面-并且实现静态跳转打包demo做演示-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【06】flutter完成注册页面-密码登录-手机短信验证-找回密码相关页面-并且实现静态跳转打包demo做演示-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
2月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
136 3
|
2月前
|
前端开发 搜索推荐 安全
陪玩系统架构设计陪玩系统前后端开发,陪玩前端设计是如何让人眼前一亮的?
陪玩系统的架构设计、前后端开发及前端设计是构建吸引用户、功能完善的平台关键。架构需考虑用户需求、技术选型、安全性等,确保稳定性和扩展性。前端可选用React、Vue或Uniapp,后端用Spring Boot或Django,数据库结合MySQL和MongoDB。功能涵盖用户管理、陪玩者管理、订单处理、智能匹配与通讯。安全性方面采用SSL加密和定期漏洞扫描。前端设计注重美观、易用及个性化推荐,提升用户体验和平台粘性。
74 0

热门文章

最新文章