【从零开始搭建uniapp开发框架】(七)—— 用户登录状态封装


在开发移动端程序时,记录用户的不同状态或者判断用户是否登录

部分页面不需要用户登录即可访问,而部分的页面需要用户登录后才能访问

在common文件夹下新增一个 js-login.js  文件

js-login源码:

/**
 * 用户登录状态的相关封装
 */

import base from '@/common/js-base.js';
import nav from '@/common/js-nav.js';

let login = {
	/**
	 * @description 保存不需要登录的页面路径地址
	 * /intake/login		用户登录页面
	 * /intake/register		用户注册页面
	 * @param {数组}  
	 */
	noLogin: ['/intake/login', '/intake/register','/tab/index'],
	/**
	 * @description 判断访问的Page是否需要登录
	 * 
如果需要登录, 则判断是否已登录,未登录则跳转到登陆界面 * @param {string} url 打开的页面 */ checkLogin: function(url) { // 保存不需要登录的页面,如果pageUrl不在数组中存在,则需要登录 let needLogin = false; for (let item of login.noLogin) { if (item == url) needLogin = false; } // 如果需要登录,并且没有登录token标识,则跳转到登陆页面 let token = login.getValue('token'); if (needLogin && base.isNull(token)) { base.logInfo("需要登录:" + url); //微信小程序,提供登录提醒 //#ifdef MP-WEIXIN uni.showModal({ title: '需登录', content: '访问该页面需要账号登录?', success: function(e) { if (e.confirm == true) { //跳转到登录界面 nav.reLaunch('/intake/login'); } else { nav.switchTab('/tab/index'); } } }); //#endif //其它平台,直接跳转登录 //#ifdef APP-PLUS || H5 nav.redirectTo('/intake/login'); //#endif } else { return true; } return false; }, /** * @description 登录成功后把token保存到本地存储
* @param {string} key 保存变量的标识 * @param {any} value 保存的值 */ saveValue: function(key, value) { uni.setStorageSync(key, value); }, /** * @description 从本地存储获取token数据
* @param {string} key 保存变量的标识 */ getValue: function(key) { let value = uni.getStorageSync(key); return value; }, /** * @description 从本地存储清楚某个key
* @param {string} key 保存变量的标识 */ clearKey: function(key) { uni.removeStorageSync(key); }, /** * @description 从本地存储清楚所有数据
* @param {string} key 保存变量的标识 */ clearAll: function(key) { uni.clearStorageSync(); } } export default login;

main.js引入封装类代码:

引入代码:

import jsLogin from './common/js-login.js'

Vue.prototype.jsLogin = jsLogin;

页面使用

onTabItemTap: function() {
	this.jsLogin.checkLogin('/tab/my');
}

页面效果

相关