欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue+springboot實現(xiàn)登錄功能

 更新時間:2021年08月13日 17:27:28   作者:傾夏而醒  
這篇文章主要為大家詳細(xì)介紹了vue+springboot實現(xiàn)登錄功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了vue+springboot實現(xiàn)登錄功能的具體代碼,供大家參考,具體內(nèi)容如下

1. 登錄功能的實現(xiàn)

實現(xiàn)提交表單的代碼如下:

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+"登錄成功,即將跳轉(zhuǎn)到主頁......");
                             }
                             else{
                                 alert(res.data.msg);
                             }
                        });
                    }
                    else{
                        return false;
           }
   });
},

當(dāng)頭一棒,腦瓜嗡嗡的。

這東西嗡嗡了好幾天最終被我用比較愚蠢的代碼實現(xiàn)了,具體思路如下:

首先我現(xiàn)在后臺獲取到當(dāng)前生成驗證碼圖片的真正驗證碼,傳遞到前端:

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就是我驗證用戶登錄的用戶名和密碼的地方,驗證碼首先生成四位驗證碼然后轉(zhuǎn)化為base64格式的字符串,最后傳遞到前端,后端返回字符串的代碼。

@GetMapping("/getCode")
    @ApiOperation(value="獲取驗證碼",notes="從后端獲取驗證碼發(fā)送到前端")
    public String getCode(HttpServletRequest request){
        String key = (String)request.getServletContext().getAttribute("code");
        log.info("key:[{}]",key);
        return key;
    }

我分析登錄模塊前端給后端傳值不成功的原因是因為前端只有用戶名和密碼,然后我錯認(rèn)為只有用戶名和密碼的表單可以組成一個對象導(dǎo)致一直將表單強制轉(zhuǎn)化為對象去傳遞給后端,這樣就一直造成了死循環(huán),在這個問題卡了好久好久。之前也是將用戶名密碼和驗證碼傳遞給后端一直卡在那里。我先從后端獲取驗證碼在前端比較正確與否,然后將用戶輸入的用戶名和密碼傳遞給后端在數(shù)據(jù)庫中查找對應(yīng)用戶名的用戶,若可以查找得到則說明此用戶存在,否則用戶存在。接下來比較用戶輸入的密碼是否和數(shù)據(jù)庫存入的密碼一致,如果一致則返回真,登錄成功,其他情況都不成功。具體的實現(xiàn)代碼如下:

//UserController
 @PostMapping("/login")
    @ApiOperation(value = "登錄系統(tǒng)", notes = "登錄員工管理系統(tǒng)")
    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}” 導(dǎo)致在數(shù)據(jù)庫查找中出錯,希望看此文章的人能避開這個坑。
這樣后端的邏輯就實現(xiàn)完成,下來是前端邏輯:

async function verify(userinfo) {
      const {data: res} = await verifyUser(userinfo);
      console.log(res);
          if (res.state == true) {
               _this.$message({
                 title: "驗證成功",
                 message: "歡迎進入員工管理系統(tǒng)",
                  type: "success"
            });
      window.location.;
      //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;

要是有其他邏輯問題,歡迎討論交流。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue去除數(shù)組指定位置元素的幾種方法

    vue去除數(shù)組指定位置元素的幾種方法

    這篇文章主要介紹了vue剔除數(shù)組指定位置元素的幾種方法,文中主要介紹了單個去除和批量去除這兩種方法,并通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • vue如何封裝Axios的get、post請求

    vue如何封裝Axios的get、post請求

    這篇文章主要介紹了vue如何封裝Axios的get、post請求,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 解決vue2.0 element-ui中el-upload的before-upload方法返回false時submit()不生效問題

    解決vue2.0 element-ui中el-upload的before-upload方法返回false時submit(

    這篇文章主要介紹了vue2.0 element-ui中el-upload的before-upload方法返回false時submit()不生效的解決方法,這里需要主要項目中用的element-ui是V1.4.3,感興趣的朋友參考下吧
    2018-08-08
  • 在vant中如何使用dialog彈窗

    在vant中如何使用dialog彈窗

    這篇文章主要介紹了在vant中如何使用dialog彈窗,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • 解決Vue router-link綁定事件不生效的問題

    解決Vue router-link綁定事件不生效的問題

    這篇文章主要介紹了解決Vue router-link綁定事件不生效的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Vue中引入json的三種方式總結(jié)

    Vue中引入json的三種方式總結(jié)

    這篇文章主要介紹了Vue中引入json的三種方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • Vue自定義詢問彈框和輸入彈框的示例代碼

    Vue自定義詢問彈框和輸入彈框的示例代碼

    這篇文章主要介紹了Vue自定義詢問彈框和輸入彈框,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-06-06
  • vue中路由傳參以及跨組件傳參詳解

    vue中路由傳參以及跨組件傳參詳解

    這篇文章主要給大家介紹了關(guān)于vue中路由傳參以及跨組件傳參的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • vue-calendar-component 封裝多日期選擇組件的實例代碼

    vue-calendar-component 封裝多日期選擇組件的實例代碼

    這篇文章主要介紹了vue-calendar-component 封裝多日期選擇組件,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • vue中利用simplemde實現(xiàn)markdown編輯器(增加圖片上傳功能)

    vue中利用simplemde實現(xiàn)markdown編輯器(增加圖片上傳功能)

    這篇文章主要介紹了vue中利用simplemde實現(xiàn)markdown編輯器(增加圖片上傳功能),本文通過實例代碼相結(jié)合的形式給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-04-04

最新評論