<>vue实现登录_获取token_拉取用户信息_后台管理系统系列

<>一、接上之前封装和跨域的文章来简单进行登录页面功能

​ 这里接上之前的;

<>第一步
//封装好的接口文件、获取的是一个模拟的接口 import { login } from './API_TYPE' //封装的axios的post方法
import { POST } from './request' 在这里默认抛出一个匿名函数并准备接收*用户名*和*密码* export default
function (username, password) { //返回这个post方法,这样整个函数的返回值就还是一个promise对象 return
POST(login, { username, password }) }
文件名:login.js

上边代码我写成了一个文件,此文件仅作用这一个方法;也可以一个文件抛出多个方法;

<>第二步

再封装一个文件用来获取用户信息

文件名:getUserInfo.js
//封装的axios的get方法 import { GET } from './request' //获取info时用到的接口 import { info
} from './API_TYPE' //这里向服务器发送一个token就好,服务器查找数据依靠的就是token
//token由用户名和密码在服务器验证成功后由服务器返回 export default function (token) { return
GET(info, token) }
这里布局用到了饿了么团队推出的 element-ui
<template> <div class="home"> <el-form label-width="80px" :model="form"
:rules="rules" ref="rulesForm"> <h2 class="login_title">会员管理系统</h2>
<el-form-item label="账号" prop="username"> <el-input v-model="form.username"
placeholder="请输入用户名"></el-input> </el-form-item> <el-form-item label="密码"
prop="password"> <el-input type="password" v-model="form.password"
placeholder="请输入用户名"></el-input> </el-form-item> <el-form-item> //登录时触发的事件
<el-button type="primary" @click="submitForm('rulesForm')"
:plain="true">登录</el-button> </el-form-item> </el-form> </div> </template>
<script> //刚刚封装的login方法 import Login from "../API/Login"; //刚刚封装的GetUsetInfo方法
import GetUserInfo from "../API/GetUsetInfo"; export default { name: "Home",
data() { return { //账号密码的双向绑定 form: { username: "", password: "" }, //账号密码的验证
验证可参考element表单组件的文档 rules: { username: [ { required: true, message: "账号不能为空",
trigger: "blur" } ], password: [{ required: true, message: "密码不能为空", trigger:
"blur" }] } }; }, methods: { //登录所触发的方法 submitForm(formName) { //
console.log(this.$refs[formName].validate); //这是element-ui的一个验证方法
this.$refs[formName].validate((valiType, errorMessage) => { if (valiType)
{//验证成功 //login方法中传入获取的用户名密码,得到回调的数据 Login(this.form.username,
this.form.password).then(response => { console.log(response.data); const res =
response.data; //这里验证服务器返回的验证凭据 if (res.data.code === 200) {
//本地保存我们获取的token,便于之后的获取信息 window.localStorage.setItem("token",
res.data.data.token); //使用GetUserInfo方法传入token;执行回调;回调便返回用户的信息
GetUserInfo(res.data.data.token).then(response => {
console.log(response.data.data.data); window.localStorage.setItem(
//储存用户的一些信息到本地 "userPermission", JSON.stringify(response.data.data.data) );
//这是element-UI的一个提示框 this.loginY(); //跳转路由到登陆成功后的页面
this.$router.push("/layout"); }); } else { console.log("信息返回错误"); return false;
} }); } else {//验证失败 console.log("error:", errorMessage); return false; } });
}, loginY() { this.$message({ message: "恭喜你,登陆成功!", type: "success" }); } } };
</script> <style lang="scss"> .home { width: 100vw; height: 100vh; background:
url(../assets/login.jpg); overflow: hidden; .el-form { width: 340px; margin:
160px auto; padding: 25px 30px; background: rgba(255, 255, 255, 0.8);
border-radius: 20px; .login_title { text-align: center; padding: 20px; color:
#303133; } } } </style>
至此;在登陆后的页面根据用户的信息渲染头像用户名等数据即可

代码的关键部分已经打上注释
<>后面会持续更新关于后台管理系统方面的逻辑

技术
友情链接
码工具
Toolsou
API参考文档
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:766591547
关注微信