Vue.js实现一个实现一个SPA登录页面的过程【推荐】登录页面的过程【推荐】
技术栈技术栈
vue.js 主框架
vuex 状态管理
vue-router 路由管理
一般过程一般过程
在一般的登录过程中,一种前端方案是:
检查状态:进入页面时或者路由变化时检查是否有登录状态(保存在cookie或者本地存储的值);
如果有登录态则查询登录信息(uid,头像等…)并保存起来;如果没有则跳转到登录页;
在登录页面(或者登录框),校检用户输入信息是否合法;
校检通过后发送登录请求;校检不成功则反馈给用户;
登录成功则从后端数据中取出session信息保存登录状态(可能需要跳转);登录不成功则提示用户不成功;
用户做出注销操作时删除登录状态。
下面我根据列出的步骤一一分析如何做代码实现,所有在代码在https://github.com/doterlin/vue-example-login中,并带有较详
细注释帮助理解代码。
在此之前假设登录页面路由为/login,登录后的路由为/user_info。这样只需要在App.vue放好router-view用于存放和渲染这两
个路由。
// component/App.vue
<template>
<div class="container" id="app">
<transition name="fade">
<keep-alive>
<router-view></router-view>
</keep-alive>
</transition>
</div>
</template>
...
并做好vue-router配置:
// js/app.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '../component/Login.vue'
import UserInfo from '../component/UserInfo.vue'
Vue.use(VueRouter);
const router = new VueRouter({
routes: [{
path: '/login',
component: Login
}, {
path: '/user_info',
component: UserInfo
}] })
...
检查状态与跳转检查状态与跳转
在两个时候我们需要检查状态:1.用户打开页面时; 2.路由发生变化时;
首先需要写好一个检查登录态的方法checkLogin:
// js/app.js
...
var app = new Vue({
data: {},
el: '#app',
render: h => h(App),
router,
store,
methods:{
checkLogin(){
//检查是否存在session
//cookie操作方法在源码里有或者参考网上的即可