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
登录问题要看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.json
或router/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根据状态进行页面跳转,确保用户在登录或注册后能够正确显示登录状态,并根据状态进行页面跳转。