uni-app 登录或注册偶发问题:uni-starter登录或注册后,“我的”页面仍显示未登录,点击头像跳转至userinfo而非登录页面。

uni-app 登录或注册偶发问题:uni-starter登录或注册后,“我的”页面仍显示未登录,点击头像跳转至userinfo而非登录页面。

开发环境 版本号 项目创建方式
Windows win11 HBuilderX

操作步骤:

uni-starter, 登录或注册后,“我的”页面仍然显示未登录,点击头像位置,跳转userinfo,而不是登录页面

预期结果:

登录或注册后,“我的”页面显示用户昵称

实际结果:

“我的”页面仍然显示未登录

bug描述:

uni-starter, 登录或注册后,“我的”页面仍然显示未登录,点击头像位置,跳转userinfo,而不是登录页面
uni-starter版本 2.2.2


更多关于uni-app 登录或注册偶发问题:uni-starter登录或注册后,“我的”页面仍显示未登录,点击头像跳转至userinfo而非登录页面。的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

登录问题要看uni-id-pages,看下登录模块是哪个版本。

更多关于uni-app 登录或注册偶发问题:uni-starter登录或注册后,“我的”页面仍显示未登录,点击头像跳转至userinfo而非登录页面。的实战教程也可以访问 https://www.itying.com/category-93-b0.html


找到原因了, uni-id-users.schema.json 没有设置permision。 但是接口本来已经返回了用户信息,没必要再前端直查user表的。

针对您提到的uni-app登录或注册后,“我的”页面仍显示未登录,以及点击头像跳转至userinfo而非登录页面的问题,这通常涉及到状态管理和页面跳转逻辑的处理。以下是一个简化的示例,展示如何通过Vuex(状态管理)和Vue Router(页面跳转)来解决这个问题。

1. 安装Vuex和Vue Router

确保您的uni-app项目中已经安装了Vuex和Vue Router。如果未安装,可以通过以下命令安装:

npm install vuex vue-router --save

2. 配置Vuex

store/index.js中配置Vuex状态管理,用于存储用户的登录状态:

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  state: {
    isLoggedIn: false,
    userInfo: null,
  },
  mutations: {
    setLoginStatus(state, status) {
      state.isLoggedIn = status;
    },
    setUserInfo(state, info) {
      state.userInfo = info;
    },
  },
  actions: {
    login({ commit }, userInfo) {
      // 模拟登录逻辑
      commit('setLoginStatus', true);
      commit('setUserInfo', userInfo);
    },
    logout({ commit }) {
      commit('setLoginStatus', false);
      commit('setUserInfo', null);
    },
  },
});

3. 配置Vue Router

pages.jsonrouter/index.js中配置页面路由,确保根据登录状态进行跳转:

import Vue from 'vue';
import Router from 'vue-router';
import Home from '@/pages/home/home.vue';
import MyPage from '@/pages/my/my.vue';
import Login from '@/pages/login/login.vue';
import UserInfo from '@/pages/userinfo/userinfo.vue';

Vue.use(Router);

const router = new Router({
  routes: [
    { path: '/', redirect: '/home' },
    { path: '/home', component: Home },
    { path: '/my', component: MyPage, meta: { requiresAuth: true } },
    { path: '/login', component: Login },
    { path: '/userinfo', component: UserInfo },
  ],
});

router.beforeEach((to, from, next) => {
  const isLoggedIn = store.state.isLoggedIn;
  if (to.matched.some(record => record.meta.requiresAuth) && !isLoggedIn) {
    next('/login');
  } else {
    next();
  }
});

export default router;

4. 在组件中使用

在“我的”页面组件中,根据登录状态显示不同的内容:

<template>
  <view>
    <text v-if="isLoggedIn">Welcome, {{ userInfo.name }}</text>
    <text v-else>Please login</text>
    <button @click="goToLogin">Login</button>
    <button @click="goToUserInfo">View User Info</button>
  </view>
</template>

<script>
import { mapState } from 'vuex';

export default {
  computed: {
    ...mapState(['isLoggedIn', 'userInfo']),
  },
  methods: {
    goToLogin() {
      this.$router.push('/login');
    },
    goToUserInfo() {
      if (this.isLoggedIn) {
        this.$router.push('/userinfo');
      } else {
        this.$router.push('/login');
      }
    },
  },
};
</script>

以上代码展示了如何通过Vuex管理登录状态,并通过Vue Router根据状态进行页面跳转,确保用户在登录或注册后能够正确显示登录状态,并根据状态进行页面跳转。

回到顶部