SpringBoot和Vue实现用户个人信息展示与保存与集成JWT——基于SpringBoot和Vue的后台管理系统项目系列博客(十四)

系列文章目录

  1. 系统功能演示——基于SpringBoot和Vue的后台管理系统项目系列博客(一)
  2. Vue2安装并集成ElementUI——基于SpringBoot和Vue的后台管理系统项目系列博客(二)
  3. Vue2前端主体框架搭建——基于SpringBoot和Vue的后台管理系统项目系列博客(三)
  4. SpringBoot后端初始框架搭建——基于SpringBoot和Vue的后台管理系统项目系列博客(四)
  5. SpringBoot集成Mybatis——基于SpringBoot和Vue的后台管理系统项目系列博客(五)
  6. SpringBoot实现增删改查——基于SpringBoot和Vue的后台管理系统项目系列博客(六)
  7. SpringBoot实现分页查询——基于SpringBoot和Vue的后台管理系统项目系列博客(七)
  8. SpringBoot实现集成Mybatis-Plus和SwaggerUI——基于SpringBoot和Vue的后台管理系统项目系列博客(八)
  9. Vue实现增删改查——基于SpringBoot和Vue的后台管理系统项目系列博客(九)
  10. SpringBoot实现代码生成器——基于SpringBoot和Vue的后台管理系统项目系列博客(十)
  11. Vue使用路由——基于SpringBoot和Vue的后台管理系统项目系列博客(十一)
  12. SpringBoot和Vue实现导入导出——基于SpringBoot和Vue的后台管理系统项目系列博客(十二)
  13. SpringBoot和Vue实现用户登录注册与异常处理——基于SpringBoot和Vue的后台管理系统项目系列博客(十三)
  14. SpringBoot和Vue实现用户个人信息展示与保存与集成JWT——基于SpringBoot和Vue的后台管理系统项目系列博客(十四)
  15. SpringBoot和Vue实现文件上传与下载——基于SpringBoot和Vue的后台管理系统项目系列博客(十五)
  16. SpringBoot和Vue整合ECharts——基于SpringBoot和Vue的后台管理系统项目系列博客(十六)
  17. SpringBoot和Vue实现权限菜单功能——基于SpringBoot和Vue的后台管理系统项目系列博客(十七)
  18. SpringBoot实现1对1、1对多、多对多关联查询——基于SpringBoot和Vue的后台管理系统项目系列博客(十八)
  19. 用户前台页面设计与实现——基于SpringBoot和Vue的后台管理系统项目系列博客(十九)
  20. SpringBoot集成Redis实现缓存——基于SpringBoot和Vue的后台管理系统项目系列博客(二十)
  21. SpringBoot和Vue集成高德地图——基于SpringBoot和Vue的后台管理系统项目系列博客(二十一)
  22. SpringBoot和Vue集成视频播放组件——基于SpringBoot和Vue的后台管理系统项目系列博客(二十二)
  23. SpringBoot和Vue集成Markdown和多级评论——基于SpringBoot和Vue的后台管理系统项目系列博客(二十三)

项目资源下载

  1. GitHub下载地址
  2. Gitee下载地址
  3. 项目MySql数据库文件


前言

  今天的主要内容包括:用户个人信息展示与保存功能的实现、SpringBoot集成JWT、使用拦截器实现拦截功能、权限不足提示功能、在后台获取当前用户信息等。废话不多说,下面就开始今天的学习!


一、用户个人信息展示与保存功能的实现

  1. 首先在UserController.java中加入用户个人信息接口,用于查询用户个人信息
    在这里插入图片描述
  2. 然后在Vue项目的views文件夹中新建Person.vue
    在这里插入图片描述
  3. 在其中输入如下内容
<template>
    <el-card style="width: 500px;">
        <el-form label-width="80px" size="small">
            <el-form-item label="用户名">
                <el-input v-model="form.username" disabled autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="昵称">
                <el-input v-model="form.nickname" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="邮箱">
                <el-input v-model="form.email" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="电话">
                <el-input v-model="form.phone" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="地址">
                <el-input v-model="form.address" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item>
                <el-button type="primary" @click="save">保 存</el-button>
            </el-form-item>
        </el-form>
    </el-card>
</template>

<script>
    export default {
        name: "Person",
        data() {
            return {
                form: {},
                user: localStorage.getItem("user") ? JSON.parse(localStorage.getItem("user")) : {}
            }
        },
        created() {
            this.request.get("/user/username/" + this.user.username).then(res => {
                if (res.code == '200') {
                    this.form = res.data
                }
            })
        },
        methods: {
            save() {
                this.request.post("/user", this.form).then(res => {
                    if (res) {
                        this.$message.success("保存成功")
                    } else {
                        this.$message.error("保存失败")
                    }
                })
            }
        }
    }
</script>

<style scoped>

</style>
  1. 最后在index.js中加入用户信息界面的路由,注意是作为Manage.vue的子路由
    在这里插入图片描述
  2. 最后测试一下,发现可以成功获取到当前用户的个人信息
    在这里插入图片描述

二、SpringBoot集成JWT

  1. 在pom.xml中加入JWT的依赖
    在这里插入图片描述
  2. 在此目录下新建TokenUtils
    在这里插入图片描述
  3. 在TokenUtils中输入如下内容
    在这里插入图片描述
  4. 在UserDTO中加入token属性
    在这里插入图片描述
  5. 在UserServiceImple.java的登录函数中加入设置token的代码
    在这里插入图片描述
  6. 然后来到前端登录测试是否会生成token,发现已经成功生成token了
    在这里插入图片描述
  7. 在request.js中加入如下代码
    在这里插入图片描述
  8. 来到前端登录测试发现token已经成功绑定在请求头中
    在这里插入图片描述

三、使用拦截器实现拦截功能

  1. 在此目录下新建JwtInterceptor.java
    在这里插入图片描述
  2. 在JwtInterceptor.java输入如下内容,要注意改成自己的包路径
package com.ironmanjay.springboot.config.Interceptor;

import cn.hutool.core.util.StrUtil;
import com.auth0.jwt.JWT;
import com.auth0.jwt.JWTVerifier;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTDecodeException;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.ironmanjay.springboot.common.Constants;
import com.ironmanjay.springboot.entity.User;
import com.ironmanjay.springboot.exception.ServiceException;
import com.ironmanjay.springboot.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class JwtInterceptor implements HandlerInterceptor {

    @Autowired
    private IUserService userService;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String token = request.getHeader("token");
        // 如果不是映射到方法直接通过
        if (!(handler instanceof HandlerMethod)) {
            return true;
        }
        // 执行认证
        if (StrUtil.isBlank(token)) {
            throw new ServiceException(Constants.CODE_401, "无token,请重新登录");
        }
        // 获取 token 中的 userId
        String userId;
        try {
            userId = JWT.decode(token).getAudience().get(0);
        } catch (JWTDecodeException j) {
            throw new ServiceException(Constants.CODE_401, "token验证失败,请重新登录");
        }
        // 根据token中的userId查询数据库
        User user = userService.getById(userId);
        if (user == null) {
            throw new ServiceException(Constants.CODE_401, "用户不存在,请重新登录");
        }
        // 用户密码加签验证token
        JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256(user.getPassword())).build();
        try {
            jwtVerifier.verify(token); // 验证token
        } catch (JWTVerificationException e) {
            throw new ServiceException(Constants.CODE_401, "token验证失败,请重新登录");
        }
        return true;
    }
}
  1. 在此目录下新建InterceptorConfig.java
    在这里插入图片描述
  2. 在InterceptorConfig.java中输入如下内容
    在这里插入图片描述
  3. 然后将Interceptor文件夹放到config文件夹中,如下图所示
    在这里插入图片描述
  4. 然后来到前端验证,在不登陆的情况下访问http://localhost:8080/user发现请求不到数据,也获取不到token,说明拦截器生效了
    在这里插入图片描述

四、权限不足提示功能

  1. 首先在request.js中引入element-ui
    在这里插入图片描述
  2. 然后在request.js中加入如下代码
    在这里插入图片描述
  3. 然后来到前端测试,发现不登陆请求就会有提示了
    在这里插入图片描述

五、在后台获取当前用户信息

  1. 在TokenUtils.java中加入如下代码
    在这里插入图片描述
    在这里插入图片描述
  2. 然后在UserController.java中加入如下代码,测试一下
    在这里插入图片描述
  3. 然后刷新前端页面,发现已经成功获取到当前登录的用户昵称
    在这里插入图片描述

总结

  以上就是今天学习的全部内容了,下篇博文将给大家带来关于SpringBoot和Vue实现文件上传与下载的内容。明天见!

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
摘 要 在如今这个人才需求量大的时代,各方企业为了永葆企业的活力与生机,在不断开 拓进取的同时,又广泛纳用人才,为企业的长久发展奠定了基础。于是,各个企业与部 门机构,都不可避免地会接触到人力资源管理的问题。 Hrm 是一款人力资源管理系统,其主要功能模块有员工个人信息修改、请假、员工 的薪资管理、考勤管理、社保管理。其中考勤管理实现了员工考勤状态的修改与员工考 勤月报表的导出,以及通过员工考勤记录的导入来实现员工考勤状态的判断。社保管理, 主要实现了员工社保的计算以及明细的修改。薪资管理,实现了员工工资的调整,以及 员工月工资报表的导出。 本项目采用了前后端分离的技术,前端是基于 Vue+ElementUI+Axios 开发的,后端 则是基于 Spring Boot+MyBatis Plus+ Jwt+Mysql。本项目实现了权限菜单管理,通过员 工的权限动态渲染菜单,并动态生成路由。通过 Jwt token 来判断当前登录的员工以及 员工的登录状态。 关键词:人力资源管理系统,Spring BootVue,权限管 人力资源管理是企业运营中必不可少的一环,它关系到企业的前途与发展。尤其对 于中小微企业来说,对企业的发展有着举足轻重的作用。随着近年来,政府对创业项目 的大力扶持,我国创业型企业蓬勃发展。据统计,2019 年,我国创业企业数量已达 1810 万余家,占全国企业数的 97%,截止 2020 年,我国创业企业数量达到了 2030 万,同比 增长 10%。虽然我国创业企业的基数在不断增大,但是能够长久存活的企业却少之又少。 在创业初期,随着企业初具规模,大多数创业者开始将主要精力集中在市场调研和 开发产品上,而忽略了团队的内部管理。据调查,中国企业的平均寿命是 7.02 年,但 70%的企业存活不超过 5 年,究其原因有很多,其中最重要的一点就是,人力资源管理 未能有效推动企业向前发展
基于springbootvue的学生选课系统设计与实现如下: 首先,我们使用springboot作为后端框架,建立学生选课系统的后台服务。通过springboot的开发方式,我们可以快速搭建一个可靠的后台框架。我们可以使用spring data jpa作为持久层框架,与数据库进行交互。通过定义实体类和仓库接口,可以实现对学生、课程和选课等数据的增删改查操作。 其次,我们使用vue作为前端框架,开发学生选课系统的前端界面。通过vue的开发方式,我们可以实现简洁、美观的用户界面。我们可以使用vue-router进行页面的路由管理,使用axios进行数据的异步请求,与后台进行数据的交互。通过编写组件和模板,可以实现用户注册登录、显示学生和课程信息、进行选课和退课等功能。 在设计实现学生选课系统时,需要考虑以下几个方面的功能和模块: 1. 用户模块:包括学生和管理员的登录、注册、信息修改等功能,可以使用JWT实现用户身份验证和权限管理。 2. 学生信息管理模块:包括学生信息的增删改查功能,通过vue的表单和数据绑定,实现页面与数据库的数据同步。 3. 课程信息管理模块:包括课程信息的增删改查功能,可以使用数据表格实现数据的展示和编辑。 4. 选课模块:学生可以根据课程信息进行选课,可以使用复选框或下拉列表实现选课功能,可以在后台实现选课的逻辑判断和冲突检测。 5. 退课模块:学生可以根据已选课程进行退课,可以在前台进行退课操作,也可以在后台进行退课的逻辑判断和处理。 通过以上的设计和实现,我们可以得到一个基于springbootvue的学生选课系统。该系统用户界面友好,操作简单,具备基本的学生信息管理和选课功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IronmanJay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值