十、Vue--修改密码

一、需求分析

   当点击修改密码时,弹出修改密码框,向数据库中查询原密码,正确时才允许修改,修改完,点击确定时,更新密码。

二、创建修改密码模板

1.在头部组件里:

<!-- 修改密码弹出框 -->
    <el-dialog title="修改密码" :visible.sync="dialogFormVisible">
      <el-form :model="form" ref="pwdForm" :rules="rules">
        <el-form-item label="原密码" prop="password">
          <el-input v-model="form.password" autocomplete="off"></el-input>
        </el-form-item>

        <el-form-item label="新密码" prop="newPassword">
          <el-input v-model="form.newPassword" autocomplete="off"></el-input>
        </el-form-item>

        <el-form-item label="确认密码" prop="checkPassword">
          <el-input v-model="form.checkPassword" autocomplete="off"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="primary" @click="onSubmit('pwdForm')">确 定</el-button>
      </div>
    </el-dialog>

2.在script标签里创建相应方法及数据:

 在data里:

  return {
      rules: {
        password: [
          { required: true, message: "请输入原密码", trigger: "blur" },
          { validator: validatePass, message: "原密码不正确", trigger: "blur" },
        ],
        newPassword: [
          { required: true, message: "请输入新密码", trigger: "blur" },
        ],
        checkPassword: [
          { required: true, message: "不能为空", trigger: "blur" },
          { validator: checkpass, trigger: "blur" },
        ],
      },
      dialogFormVisible: false,
      form: {
        password: "",
        newPassword: "",
        checkPassword: "",
      },
    };

在handleCommand里:

 if (command == "a") {
        this.dialogFormVisible = true;
      } 

 3.添加 submitForm 方法, 提交修改密码表单

 onSubmit(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert("验证通过");
        
        } else {
          alert("验证不通过");
          return false;
        }
      });
    },

现在完成:当点击修改密码时,弹出修改密码框,确认时弹出通过不通过。

三、 添加接口

1.添加原密码校验接口 :

输入原密码,失去焦点后异步发送请求校验是否正确, 给服务接口传入用户id和密码:

// 校验原密码
router.post("/user/pwd", (req, res) => {
    // console.log(req.body)
    let data = req.body
    User.findOne({
        _id: data.id,
        password: data.pwd
    }).then((data, err) => {
        if (err) {
            return res.status(500).json({
                code: 3000,
                flag: false,
                message: "服务器后台错误"
            })
        }

        if (!data) {
            return res.status(200).json({
                "code": 4000,
                "flag": false,
                "message": "密码不正确"
            })
        }

        return res.status(200).json({
            "code": 2000,
            "flag": true,
            "message": "密码正确"
        })
    })
})

四、调用接口

1.新建 api\pwd.js 文件, 调用服务接口实现如下:

import request from "@/utils/request.js"
export default {
    getPass(msg) { //校验原密码
        return request({
            url: "/user/pwd",
            method: "post",
            data: msg
        })
    },
}

2.引入:

import pwd from "@/api/pwd.js";

3.在data里return上,写自定义校验规则,在失去焦点时,再去检查密码是否正确:

 // 校验原密码
    let validatePass = (rule, value, callback) => {
      let userdata = JSON.parse(localStorage.getItem("sms-user"));
      userdata.pwd = this.form.password;
      pwd.getPass(userdata).then((res) => {
        if (res.data.flag) {
          callback();
        } else {
          callback(new Error(res.data.message));
        }
      });
    };

五、检测新密码和确认密码一致性

1.在校验原密码下写:

 // 检测新密码和确认密码一致性
    let checkpass = (rule, value, callback) => {
      if (value == this.form.newPassword) {
        callback();
      } else {
        callback(new Error("密码不一致"));
      }
    };

六、点击确定时,更新密码。

1. 添加修改密码接口,点击确认, 将用户id和新密码提交给后台接口

// 修改密码(更新密码)
router.put("/user/pwd", function(req, res) {
    let data = req.body
    User.findOne({
        _id: data.id,
    }).then((data, err) => {
        if (err) {
            return res.status(500).json({
                code: 3000,
                flag: false,
                message: "服务器后台错误"
            })
        }
        if (!data) {
            return res.status(200).json({
                "code": 4000,
                "flag": false,
                "message": "密码错误"
            })
        }

        data.password = req.body.pwd //修改密码
        User.findByIdAndUpdate(req.body.id, data).then((data, err) => {
            if (err) {
                return res.status(500).json({
                    code: 3000,
                    flag: false,
                    message: "服务器后台错误"
                })
            }
            return res.status(200).json({
                "code": 2000,
                "flag": true,
                "message": "修改密码成功"
            })
        })
    })
});

2. Api 调用接口:

  update(msg) { //校验确认密码和新密码
        return request({
            url: "/user/pwd",
            method: "put",
            data: msg
        })
    }

3.在方法里:

 methods: {
    handleCommand(command) {
      if (command == "a") {
        this.dialogFormVisible = true;
      } else if (command == "b") {
        this.out()
      }
    },
    out() {//退出登录
      logout(localStorage.getItem("sms-token"))
        .then((res) => {
          let resArr = res.data;
          if (resArr.flag) {
            // 清除本地数据
            localStorage.removeItem("sms-token");
            localStorage.removeItem("sms-user");
            this.$message({
              showClose: true,
              message: resArr.message,
              type: "error",
            });
            this.$router.push("/login"); //退出登录,让它回到登录页面
          } else {
            this.$message({
              showClose: true,
              message: resArr.message,
              type: "error",
            });
          }
        })
        .catch((err) => {
          console.log("err", err);
        });
    },
    onSubmit(formName) {
      this.$refs[formName].validate((valid) => {
        if (valid) {
          alert("验证通过");
          let userdata = JSON.parse(localStorage.getItem("sms-user"));
          userdata.pwd = this.form.newPassword;
          pwd.update(userdata).then((res) => {
            if (res.data.flag) {
              this.dialogFormVisible = false;
              this.out();
            }
          });
        } else {
          alert("验证不通过");
          return false;
        }
      });
    },
  },

修改密码全部完成。

  • 11
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,关于vue-element-admin登录修改,您可以参考以下步骤: 1. 打开vue-element-admin项目,找到src/views/login/index.vue文件。 2. 在该文件中,可以找到登录表单的代码,包括用户名和密码的输入框以及登录按钮。 3. 根据您的需求,可以修改登录表单的样式、验证规则等。 4. 如果需要修改登录逻辑,可以在该文件中找到handleSubmit方法,该方法会在用户点击登录按钮时被调用。您可以在该方法中添加自己的登录逻辑。 5. 如果需要修改登录成功后的跳转页面,可以在该文件中找到handleSubmit方法中的this.$router.push('/')代码,将'/'改为您需要跳转的页面路径即可。 希望以上内容能够帮助到您。如有疑问,请随时联系我。 ### 回答2: vue-element-admin是一个基于Vue.js构建的后台管理系统模板。在使用vue-element-admin开发项目时,有时需要自定义登录功能并对其进行修改。下面将从以下三个方面介绍vue-element-admin的登录修改。 一、登录页自定义 首先,在项目src/views/login/index.vue文件中修改登录页面。可以根据自己的需求添加、修改、删除登录页的元素和样式,以显示出适合自己项目的登录页。例如,可以更改背景颜色、添加公司logo等。 二、用户认证 在vue-element-admin中,授权是基于角色的。每个用户都被分配到一个或多个角色,并根据这些角色进行相应的访问和操作权限。在进行用户认证时,可以根据需要进行修改。 在项目src/permission.js文件中,定义了一个函数generateRoutes,用来根据用户角色和权限来生成路由表。在这里,可以根据自己的需要,对该函数进行修改,改变用户验证其合法性逻辑。例如,可以将角色权限于后台配置项对应。 三、后端接口 在vue-element-admin中,登录认证请求是由后端的接口进行处理的。因此,在进行登录修改时,还需要对后端接口进行相应的修改。 在后端接口中,根据自己的需求进行添加或更改相应的接口,以实现自己想要的登录认证方式。例如,可以加入验证码、改变登录方式等。 总之,vue-element-admin的登录修改主要就以上三个方面进行,通过对登录界面、用户认证、后端接口进行修改,可以使vue-element-admin更加适合自己的项目需求和实际情况。 ### 回答3: Vue-element-admin 是一个基于 Vue.js 的后台管理系统解决方案,它为我们提供了许多实用的组件和工具,让我们能够快速地搭建一个功能完善的后台管理系统。其中一个最重要的功能就是登录模块。 在 Vue-element-admin 中,登录模块封装在 src/views/login 文件夹下的 index.vue 文件中。在该文件中,我们可以通过引入 Element UI 中的组件来构建登录表单。 登录表单通常包括两个输入框,分别用于输入用户名和密码,还有一个登录按钮。在 Element UI 中,我们可以使用 el-input 组件来实现输入框,使用 el-button 组件来实现按钮。 在进行登录操作时,我们需要将用户输入的用户名和密码发送到后端接口进行验证。在 Vue-element-admin 中,我们可以使用封装好的 axios 组件来实现数据的请求和响应。 登录成功后,我们需要将用户的登录状态保存下来,这样在后续的操作中就可以判断用户是否已经登录。在 Vue-element-admin 中,我们可以使用 Vuex 来实现状态管理,将用户信息保存在一个全局的 store 中,供其他组件使用。 在一些情况下,我们可能需要对登录界面进行自定义的样式修改,例如更改登录框背景色、修改文字的颜色和大小等。在 Vue-element-admin 中,我们可以通过覆盖默认的样式文件来实现自定义样式的修改。默认的样式文件在 src/styles/ 文件夹下,可以根据需要进行修改。 总之,Vue-element-admin 提供了一个完整的登录功能模块,可以快速实现后台管理系统的用户登录功能,并且支持自定义样式的修改,是一个分实用的管理系统搭建方案。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值