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

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

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

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

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

實(shí)現(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)到主頁(yè)......");
                             }
                             else{
                                 alert(res.data.msg);
                             }
                        });
                    }
                    else{
                        return false;
           }
   });
},

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

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

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

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('驗(yàn)證碼錯(cuò)誤!');
                            }
                        });
                    }

中間的verify就是我驗(yàn)證用戶登錄的用戶名和密碼的地方,驗(yàn)證碼首先生成四位驗(yàn)證碼然后轉(zhuǎn)化為base64格式的字符串,最后傳遞到前端,后端返回字符串的代碼。

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

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

在編碼過程中,還遇到一個(gè)小插曲 就是 where Name = “#{name}” 導(dǎo)致在數(shù)據(jù)庫(kù)查找中出錯(cuò),希望看此文章的人能避開這個(gè)坑。
這樣后端的邏輯就實(shí)現(xiàn)完成,下來是前端邏輯:

async function verify(userinfo) {
      const {data: res} = await verifyUser(userinfo);
      console.log(res);
          if (res.state == true) {
               _this.$message({
                 title: "驗(yàn)證成功",
                 message: "歡迎進(jìn)入員工管理系統(tǒng)",
                  type: "success"
            });
      window.location.;
      //await _this.$router.push("http://www.baidu.com");
       } else {
           _this.$message({
            title: "驗(yàn)證失敗",
         message: res.msg,
          type: "error"
       })
       return false;
     }
}

這里使用axios的post請(qǐng)求,具體的路徑在projectName.src.api 新建一個(gè)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', //后端項(xiàng)目的端口
  timeout: 10000,
  headers: {'X-Custom-Header': 'foobar'}
});

export default instance;

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

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

相關(guān)文章

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

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

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

    vue如何封裝Axios的get、post請(qǐng)求

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

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

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

    在vant中如何使用dialog彈窗

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論