当前位置: 首页 > news >正文

浪花 - 用户信息展示+更新

1. 用户登录获取登录凭证

  • 已登录的用户才能获取个人信息
  • 发送 Aixos 请求登录
const user = ref();onMounted(async () => {const res = await myAxios.get('/user/current');if (res.code === 0) {console.log("获取用户信息成功");user.value = res.data;} else {console.log("获取用户信息失败")}
})

2. 获取登录用户的个人信息

  • 点击个人页时加载个人信息

踩坑记录:前端发送请求后端无法识别已登录用户

  • 原因:前端发送请求时没有携带登录时后端返回的 Cookie
  • 解决:给 Axios 加上携带 Cookie 的配置,表示请求要携带 Cookie
myAxios.defaults.withCredentials = true;
  • 携带 Cookie 成功

  •  获取当前登录用户信息:后端通过 Cookie 识别到前端的登录态,获取成功✔

 3. 展示用户信息

<template><template v-if="user"><van-cell title="昵称" is-link :value="user.username" @click="toEdit('username', '昵称',user.username)"/><van-cell title="账户" :value="user.userAccount"/><van-cell title="头像" :value="user.avatarUrl" @click="toEdit('avatarUrl', '头像',user.avatarUrl)"><img :src="user.avatarUrl"/></van-cell><van-cell title="性别" is-link :value="user.gender" @click="toEdit('gender', '性别',user.gender)"/><van-cell title="手机号" is-link :value="user.phone" @click="toEdit('phone', '手机号',user.phone)"/><van-cell title="邮箱" is-link :value="user.email" @click="toEdit('email', '邮箱',user.email)"/><van-cell title="星球编号" :value="user.planetCode" /><van-cell title="标签信息" is-link :value="user.tags" @click="toEdit('tags', '标签信息',user.tags)" /><van-cell title="注册时间" :value="user.createTime" /></template>
</template>

4. 更新用户信息

前端:

  •  点击提交按钮,发送更新用户个人信息请求
  • 收到后端更新成功的响应,返回信息展示页面
const onSubmit = async () => {const currentUser = await getCurrentUser();if (!currentUser) {console.log("用户未登录")return;}// 发送更新请求const res = await myAxios.post('/user/update', {'id': currentUser.id,[editUser.value.editKey as string]: editUser.value.currentValue,})if (res.code === 0 && res.data > 0) {router.back();console.log("修改成功!");} else {console.log("修改失败!");}
};

后端:

  • 校验用户权限,满足权限则执行 UPDATE 语句更新个人信息

  • 完善逻辑(校验参数):前端传来的参数为空时,直接抛出异常,不执行 UPDATE 语句
/*** 更新用户信息* @param user 要更新的用户* @param loginUser 当前登录用户* @return*/@Overridepublic int updateUser(User user, User loginUser) {long userId = user.getId();if (userId <= 0) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}// TODO 如果用户没有传递任何需要更新的值,直接报错,不执行 UPDATE 语句if(user == null) {throw new BusinessException(ErrorCode.PARAMS_ERROR);}// 管理员:更新任意用户的信息// 普通用户:只允许更新自己的信息if (!isAdmin(loginUser) && userId != loginUser.getId()) {throw new BusinessException(ErrorCode.NO_AUTH);}User oldUser = userMapper.selectById(userId);if (oldUser == null) {throw new BusinessException(ErrorCode.NULL_ERROR);}return userMapper.updateById(user);}
http://www.lryc.cn/news/286565.html

相关文章:

  • xxe漏洞之scms靶场漏洞
  • Unity3d C#实现三维场景中图标根据相机距离动态缩放功能
  • Linux网络编程(二-套接字)
  • 【DeepLearning-1】 注意力机制(Attention Mechanism)
  • c++:string相关的oj题(415. 字符串相加、125. 验证回文串、541. 反转字符串 II、557. 反转字符串中的单词 III)
  • HuoCMS|免费开源可商用CMS建站系统HuoCMS 2.0下载(thinkphp内核)
  • VsCode + CMake构建项目 C/C++连接Mysql数据库 | 数据库增删改查C++封装 | 信息管理系统通用代码 ---- 课程笔记
  • HackTheBox - Medium - Linux - Ransom
  • 柠檬微趣面试准备
  • uniapp嵌套webview,无法返回上一级?
  • 【优先级队列 之 堆的实现】
  • Vue中$watch()方法和watch属性的区别
  • openssl3.2 - 官方demo学习 - test - certs - 001 - Primary root: root-cert
  • 小程序商城能不能自己开发?
  • GPTBots:利用FlowBot中的卡片和表单信息,提供丰富的客服体验
  • ERC20 解读
  • C#,入门教程(31)——预处理指令的基础知识与使用方法
  • Java SE:面向对象(下)
  • 搭建开源数据库中间件MyCat2-配置mysql数据库双主双从
  • Oracle 19c rac集群管理 -------- 集群启停操作过程
  • 【Java】HttpServlet类中前后端交互三种方式(query string、form表单、JSON字符串)
  • 【深蓝学院】移动机器人运动规划--第2章 基于搜索的路径规划--笔记
  • 安装向量数据库milvus可视化工具attu
  • STM32标准库开发——串口发送/单字节接收
  • jdk17新特性——文本块(即多行的字符串)增强
  • 阿里云ECS使用docker搭建mysql服务
  • Windows给docker设置阿里源
  • 安裝火狐和穀歌流覽器插件FoxyProxy管理海外動態IP代理
  • C++重新入门-函数重载
  • niushop靶场漏洞查找-文件上传漏洞等(超详细)