当前位置:首页 > uni-app

uniapp 全局登录

2026-03-05 08:31:27uni-app

uniapp 全局登录的实现方法

在 uniapp 中实现全局登录功能,通常需要结合本地存储和全局状态管理。以下是几种常见的实现方式:

使用 Vuex 管理登录状态

安装 Vuex 并创建 store 模块管理用户登录状态:

// store/index.js
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)

const store = new Vuex.Store({
  state: {
    userInfo: null,
    isLogin: false
  },
  mutations: {
    login(state, userInfo) {
      state.userInfo = userInfo
      state.isLogin = true
      uni.setStorageSync('userInfo', userInfo)
    },
    logout(state) {
      state.userInfo = null
      state.isLogin = false
      uni.removeStorageSync('userInfo')
    }
  }
})

export default store

封装全局登录方法

在 main.js 中挂载全局方法:

// main.js
import store from './store'

Vue.prototype.$login = {
  checkLogin() {
    return store.state.isLogin || uni.getStorageSync('userInfo')
  },
  getUserInfo() {
    return store.state.userInfo || uni.getStorageSync('userInfo')
  }
}

路由拦截实现自动登录

在 pages.json 中配置需要登录的页面路由,并在 App.vue 中检查登录状态:

// App.vue
export default {
  onLaunch() {
    const userInfo = uni.getStorageSync('userInfo')
    if (userInfo) {
      this.$store.commit('login', userInfo)
    }
  }
}

封装请求拦截器

在请求拦截器中自动添加 token:

// utils/request.js
uni.addInterceptor('request', {
  invoke(args) {
    if (Vue.prototype.$login.checkLogin()) {
      args.header = {
        ...args.header,
        'Authorization': 'Bearer ' + Vue.prototype.$login.getUserInfo().token
      }
    }
    return args
  },
  fail(err) {
    console.log('interceptor-fail', err)
  }
})

登录过期处理

在响应拦截器中处理 token 过期:

uniapp 全局登录

uni.addInterceptor('request', {
  success(args) {
    if (args.statusCode === 401) {
      uni.showToast({
        title: '登录已过期',
        icon: 'none'
      })
      store.commit('logout')
      uni.reLaunch({
        url: '/pages/login/login'
      })
    }
    return args
  }
})

注意事项

  • 敏感信息如 token 建议使用加密存储
  • 退出登录时要清除所有相关存储
  • 需要处理多端同步问题,特别是 App 和 H5 端
  • 建议配合后端实现 token 刷新机制
  • 生产环境需要增加更完善的错误处理逻辑

以上方案可根据实际项目需求进行组合或调整,实现适合业务场景的全局登录功能。

标签: 全局uniapp
分享给朋友:

相关文章

uniapp开发

uniapp开发

uniapp开发简介 uniapp是一款基于Vue.js的跨平台开发框架,支持一次开发,多端部署。开发者可以通过编写一套代码,发布到iOS、Android、Web以及各种小程序平台(如微信、支付宝、百…

uniapp消息推送

uniapp消息推送

uniapp消息推送实现方法 uniapp支持多种消息推送方式,包括uniPush、个推、极光推送等。以下为常见实现方案: uniPush(官方推荐) uniapp官方提供的推送服务,基于DClou…

uniapp支付功能怎么实现

uniapp支付功能怎么实现

uniapp支付功能实现方法 准备工作 注册微信支付、支付宝等平台的开发者账号,获取必要的商户ID(mch_id)、API密钥(key)、应用ID(appid)等信息。确保项目已配置好相关支付SDK。…

uniapp设置背景

uniapp设置背景

设置全局背景样式 在App.vue文件中添加全局样式,使用page选择器设置页面背景。这种方式会影响所有页面背景。 <style> page { background-col…

uniapp悬浮

uniapp悬浮

实现悬浮效果的方法 在UniApp中实现悬浮效果可以通过CSS的position: fixed或position: sticky属性结合动态样式控制来实现。以下是具体实现方式: 使用CSS固定定位…

uniapp营销

uniapp营销

营销策略 采用社交媒体推广,结合微信、微博、抖音等平台进行内容营销。通过短视频、直播等形式展示产品特点,吸引用户关注。利用KOL合作,扩大品牌影响力,提高用户信任度。 用户裂变 设计裂变活动…