返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue+springboot实现登录功能
  • 548
分享到

vue+springboot实现登录功能

2024-04-02 19:04:59 548人浏览 安东尼
摘要

本文实例为大家分享了Vue+SpringBoot实现登录功能的具体代码,供大家参考,具体内容如下 1. 登录功能的实现 实现提交表单的代码如下: async submitFORM

本文实例为大家分享了Vue+SpringBoot实现登录功能的具体代码,供大家参考,具体内容如下

1. 登录功能的实现

实现提交表单的代码如下:


async submitFORM(user) {
        this.$refs[user].validate((valid) => {
               if(valid){
                        alert("user");
                        this.$axiOS.post("Http:localhost:8087/user/login?code="+this.code,user).then(res => {
                            alert("success")
                             if(res.data.state){
                                 alert(res.data.msg+"登录成功,即将跳转到主页......");
                             }
                             else{
                                 alert(res.data.msg);
                             }
                        });
                    }
                    else{
                        return false;
           }
   });
},

当头一棒,脑瓜嗡嗡的。

这东西嗡嗡了好几天最终被我用比较愚蠢的代码实现了,具体思路如下:

首先我现在后台获取到当前生成验证码图片的真正验证码,传递到前端


if (valid) {
        console.log(this.user);
         this.$axios.get("http://localhost:8087/user/getCode").then(res => {
                  let tcode = res.data.toLowerCase();
                  if (tcode == this.code) {
                                verify(this.user);
                            } else {
                                alert('验证码错误!');
                            }
                        });
                    }

中间的verify就是我验证用户登录的用户名和密码的地方,验证码首先生成四位验证码然后转化为base64格式的字符串,最后传递到前端,后端返回字符串的代码。


@GetMapping("/getCode")
    @apiOperation(value="获取验证码",notes="从后端获取验证码发送到前端")
    public String getCode(httpservletRequest request){
        String key = (String)request.getServletContext().getAttribute("code");
        log.info("key:[{}]",key);
        return key;
    }

我分析登录模块前端给后端传值不成功的原因是因为前端只有用户名和密码,然后我错认为只有用户名和密码的表单可以组成一个对象导致一直将表单强制转化为对象去传递给后端,这样就一直造成了死循环,在这个问题卡了好久好久。之前也是将用户名密码和验证码传递给后端一直卡在那里。我先从后端获取验证码在前端比较正确与否,然后将用户输入的用户名和密码传递给后端在数据库中查找对应用户名的用户,若可以查找得到则说明此用户存在,否则用户存在。接下来比较用户输入的密码是否和数据库存入的密码一致,如果一致则返回真,登录成功,其他情况都不成功。具体的实现代码如下:


//UserController
 @PostMapping("/login")
    @ApiOperation(value = "登录系统", notes = "登录员工管理系统")
    public Map<String,Object> login(@RequestParam String Name,@RequestParam String Pwd){
        System.out.println(Name+" "+Pwd);
        Map<String,Object> map = new HashMap<>();
        try{
            User userdb = userService.login(Name,Pwd);
            map.put("state",true);
            map.put("msg","登录成功");
            map.put("user",userdb);
        }catch(Exception e){
            e.printStackTrace();
            map.put("state",false);
            map.put("msg",e.getMessage());
        }
        log.info("[{}]",map.toString());
        return map;
    }

//UserServiceImpl
 @Override
    public User login(String Name,String Pwd) {
        User userDB = userMapper.selectByName(Name);
        if(!ObjectUtils.isEmpty(userDB)){
            if(userDB.getPwd().equals(Pwd)){
                return userDB;
            }
            else{
                throw new RuntimeException("密码输入不正确");
            }
        }
        else{
            throw new RuntimeException("用户不存在");
        }
    }

//UserMapper.java
User selectByName(String name);

<!--UserMapper.xml-->
 <select id="selectByName" parameterType="String" resultType="com.sunset.system.entity.User">
        select Id,Name,Age,Sex,Pwd,Dept,Salary
        from user where Name = #{name}
</select>

在编码过程中,还遇到一个小插曲 就是 where Name = “#{name}” 导致在数据库查找中出错,希望看此文章的人能避开这个坑。
这样后端的逻辑就实现完成,下来是前端逻辑:


async function verify(userinfo) {
      const {data: res} = await verifyUser(userinfo);
      console.log(res);
          if (res.state == true) {
               _this.$message({
                 title: "验证成功",
                 message: "欢迎进入员工管理系统",
                  type: "success"
            });
      window.location.href = "http://www.baidu.com";
      //await _this.$router.push("http://www.baidu.com");
       } else {
           _this.$message({
            title: "验证失败",
         message: res.msg,
          type: "error"
       })
       return false;
     }
}

这里使用axios的post请求,具体的路径在projectName.src.api 新建一个user.js的文件


export  const verifyUser = (user) =>{
    return request({
        url: "/user/login",
        method: 'post',
        params: {
            Name: user.Name,
            Pwd: user.Pwd
        }
    })
}

此外还需要配置request.js,文件路径 projectName.src.utils


import axios from 'axios'

const instance = axios.create({
  baseURL: 'http://localhost:8080', //后端项目的端口
  timeout: 10000,
  headers: {'X-Custom-Header': 'foobar'}
});

export default instance;

要是有其他逻辑问题,欢迎讨论交流。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: vue+springboot实现登录功能

本文链接: https://lsjlt.com/news/132506.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot+vue实现登录功能
    本文实例为大家分享了springboot+vue实现登录功能的具体代码,供大家参考,具体内容如下 目录结构 前端端口:8080 后端端口:8900 login.vue <...
    99+
    2024-04-02
  • vue+springboot实现登录功能
    本文实例为大家分享了vue+springboot实现登录功能的具体代码,供大家参考,具体内容如下 1. 登录功能的实现 实现提交表单的代码如下: async submitForm...
    99+
    2024-04-02
  • vue+springboot+shiro+jwt实现登录功能
    目录1.导入依赖2.JWTToken 替换 Shiro 原生 Token3.JWT token 工具类,提供JWT生成、校验、获取token存储的信息4.JWTFilter请求拦截5...
    99+
    2024-04-02
  • springboot+vue如何实现登录功能
    小编给大家分享一下springboot+vue如何实现登录功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!目录结构前端端口:8080后端端口:8900login.vue<template> &nbs...
    99+
    2023-06-15
  • Vue登录功能实现
    目录写在前面登录概述登录业务流程登录业务的相关技术点登录—token原理分析登录功能实现登录表单的布局登录表单的数据绑定登录表单的验证规则登录表单的重置登录预验证登录组件配置弹窗提示...
    99+
    2024-04-02
  • SpringBoot+Vue实现简单的登录注册功能
    文章目录 一、前言1.开发环境2.功能3.项目运行截图 二、撸代码1.构建前端项目2.构建后端项目3.前端页面编写4.后端代码编写5.前后端联调 三、小结 一、前言 ...
    99+
    2023-09-20
    vue.js spring boot java mysql
  • Vue+Vux实现登录功能
    一、准备工作 请参照 Vue前端框架搭建 使用模板创建框架。 二、创建登录页 1.main.js 中引入全局 ToastPlugin、LoadingPlugin 插件 import ...
    99+
    2024-04-02
  • springboot+vue实现登录功能的最新方法整理
    目录一、介绍二、环境工具三、搭建后端spring-boot框架1、选择Spring Initializr创建新项目2、CommonResult类3、IErrorCode 接...
    99+
    2024-04-02
  • vue+tp5实现简单登录功能
    本文实例为大家分享了vue+tp5实现简单登录功能的具体代码,供大家参考,具体内容如下 准备工作:安装vue-cli,element-ui,package.json中如图所示,看着安...
    99+
    2024-04-02
  • SpringBoot JWT实现token登录刷新功能
    目录1. 什么是JWT2. JWT组成部分3. JWT加密方式4.实战5.总结1. 什么是JWT Json web token (JWT) 是为了在网络应用环境间传递声明而执行的一种...
    99+
    2024-04-02
  • springboot+VUE实现登录注册
    本文实例为大家分享了springboot+VUE实现登录注册的具体代码,供大家参考,具体内容如下 一、springBoot 创建springBoot项目 分为三个包,分别为contr...
    99+
    2024-04-02
  • Springboot+Thymeleaf+Jpa实现登录功能(附源码)
    目录前言具体实现配置文件application.yml的代码Po(实体)层代码(User.java)Dao(数据库操作)层代码(UserDao.java)Service(服务)层代码...
    99+
    2024-04-02
  • Vue PC前端扫码登录功能实现
    目录需求描述思路解析PC 扫码原理?前端功能实现如何生成二维码图片?如何控制二维码的时效性?前端如何获取服务器二维码的状态?参考资料:总结需求描述 目前大多数PC端应用都有配套的移动...
    99+
    2022-12-29
    vue扫码登录功能 vue登录功能 vue 扫码登录
  • Vue登录功能的实现流程详解
    目录Vue项目中实现登录大致思路安装插件创建store封装axiosqs vue 插件api.js的作用路由拦截登录页面实际使用Vue项目中实现登录大致思路 1、第一次登录的时候,前...
    99+
    2024-04-02
  • vue+springboot实现登录验证码
    本文实例为大家分享了vue+springboot实现登录验证码的具体代码,供大家参考,具体内容如下 先看效果图 在login页面添加验证码html 在后端pom文件添加kaptc...
    99+
    2024-04-02
  • SpringSecurity整合springBoot、redis实现登录互踢功能
    背景 基于我的文章——《SpringSecurity整合springBoot、redis token动态url权限校验》。要实现的功能是要实现一个用户不可以同时在两台设备上登录,有两...
    99+
    2024-04-02
  • vue实现登陆功能
    本文实例为大家分享了vue实现登陆功能的具体代码,供大家参考,具体内容如下 最近在学习vue,发现了vue的好多坑,比如怎么更好的获取input框输入的值而减少获取dom节点的消耗 ...
    99+
    2024-04-02
  • VUE+SpringBoot实现分页功能
    本文主要介绍一下 Vue + SpringBoot 中如何实现一个分页列表数据。 1、效果展示 2、VUE代码 VUE之视图定义 <el-row> ...
    99+
    2024-04-02
  • Vue PC端怎么实现扫码登录功能
    本文小编为大家详细介绍“Vue PC端怎么实现扫码登录功能”,内容详细,步骤清晰,细节处理妥当,希望这篇“Vue PC端怎么实现扫码登录功能”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。.markdown-bod...
    99+
    2023-07-05
  • springboot+VUE如何实现登录注册
    这篇文章主要介绍springboot+VUE如何实现登录注册,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、springBoot创建springBoot项目分为三个包,分别为controller,service, ...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作