返回顶部
首页 > 资讯 > 前端开发 > JavaScript >VueelementUI实现免密登陆与号码绑定功能
  • 895
分享到

VueelementUI实现免密登陆与号码绑定功能

VueelementUI免密登陆VueelementUI号码绑定 2022-11-13 19:11:39 895人浏览 泡泡鱼
摘要

目录前言登录功能绑定/解绑功能获取用户信息功能获取用户信息功能最终效果项目地址前言 前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescr

前言

前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescript语法更方便阅读。

首先来编写发送验证码函数, 登录,绑定,解绑的业务都需要发送验证码功能,通过currentVerifyingType 来区别当前验证码种类。也就是在服务端的Purpose目的。

VerifyingType 可以为LOGINUNBIND_PHONENUMBERBIND_PHONENUMBER

async sendVerificationCode(phoneNumber, type) {
    this.currentVerifyingType = type;
    this.smsSendCd = 60;
    this.timer = setInterval(() => {
    this.smsSendCd--;
    if (this.smsSendCd <= 0) {
        clearInterval(this.timer);
    }
    }, 1000);
    await request(`${this.host}${this.prefix}/Captcha/Send`, "post", {
    userId: this.userInfo == null ? null : this.userInfo.id,
    phoneNumber: phoneNumber,
    type: type,
    })
    .catch((re) => {
        var res = re.response.data;
        this.errORMessage(res.error.message);
    })
    .then((re) => {
        var res = re.data.result;
        this.succeSSMessage("发送验证码成功");
    });
}

注意几个关键的全局变量

userInfo: null,                   //用户对象
currentVerifyingType: null,       //当前发送验证码的用途
smsSendCd: 0,                     //发送验证码的冷却时间,默认60s
loginForm: {                      //登录对象
username: "",
passWord: "",
},
token: null,                      //登录凭证Token
verifyNumber: null,               //填写的验证码

登录功能

创建手机号输入控件

<el-input
    ref="username"
    v-model="loginForm.username"
    :placeholder="'请输入手机号'"
    type="text"
    tabindex="1"
    autocomplete="on">
    <template slot="prepend">+86</template>
</el-input>

创建验证码控件,并添加一个按钮用于发送验证码,点击后触发sendVerificationCode

<el-input
    ref="password"
    v-model="loginForm.password"
    :type="passwordType"
    :placeholder="'发送验证码后键入验证码'"
    tabindex="2"
    autocomplete="on"
    @blur="capsTooltip = false"
    @keyup.enter.native="handleLogin"
    >
    <el-button
        slot="append"
        :disabled="smsSendCd > 0"
        @click="sendVerificationCode(loginForm.username, 'LOGIN')"
        >{{
        smsSendCd == 0 ? "发送验证码" : smsSendCd + "后重试"
        }}
    </el-button>
</el-input>

登录函数,将验证电话号码(即用户名)和验证码

async handleLogin() {
    this.loading = true;
    let phoneNumber = this.loginForm.username;
    let password = this.loginForm.password;
    phoneNumber = phoneNumber.trim();
    await request(`${this.host}api/TokenAuth/Authenticate`, "post", {
    phoneNumber,
    password,
    });
}

登录完成后,将Token存入Cookie

.then(async (res) => {
    var data = res.data.result;
    setToken(data.accessToken);

绑定/解绑功能

创建新手机号输入框,若没有绑定手机,附带绑定按钮,按下后将发送验证码;若已绑定手机,需要先解绑,才能绑定新号码,附带解绑按钮,按下后将发送验证码

<el-input v-model="userInfo.phoneNumber"> </el-input>
<el-button
    v-if="!userInfo.isPhoneNumberConfirmed"
    size="mini"
    type="primary"
    :disabled="smsSendCd > 0"
    @click="
    sendVerificationCode(userInfo.phoneNumber, 'BIND_PHONENUMBER')
    "
    >{{ smsSendCd == 0 ? "验证手机号" : smsSendCd + "后重试" }}
</el-button>
<el-button
    v-else
    size="mini"
    type="danger"
    :disabled="smsSendCd > 0"
    @click="
    sendVerificationCode(userInfo.phoneNumber, 'UNBIND_PHONENUMBER')
    "
    >{{ smsSendCd == 0 ? "解绑手机号" : smsSendCd + "后重试" }}
</el-button>

创建校验短信验证码控件

<el-input v-model="verifyNumber">
    <el-button
        slot="append"
        type="primary"
        size="mini"
        @click="verify">
        完成验证
    </el-button>
</el-input>

创建校验短信验证码函数,

async verify() {
    var action = null;
    if (this.currentVerifyingType == "BIND_PHONENUMBER") {
    action = "Bind";
    } else if (this.currentVerifyingType == "UNBIND_PHONENUMBER") {
    action = "Unbind";
    } else {
    action = "Verify";
    }
    await request(`${this.host}${this.prefix}/Captcha/${action}`, "post", {
    token: this.verifyNumber,
    })
    .catch((re) => {
        var res = re.response.data;
        this.errorMessage(res.error.message);
    })
    .then((re) => {
        var res = re.data;
        if (res.success) {
        this.successMessage("绑定成功");
        window.location.reload()   
        }
    });
}

获取用户信息功能

登录成功后我们要拿到当前用户的信息,存入userInfo对象,并在页面上简单展示

<span>{<!--{cke_protected}{C}%3C!%2D%2D%20%2D%2D%3E-->{ userInfo }}</span>

创建一个获取当前用户的函数

async getCurrentUser() {
    await request(
    `${this.host}${this.prefix}/User/GetCurrentUser`,
    "get",
    null
    )
    .catch((re) => {
        var res = re.response.data;
        this.errorMessage(res.error.message);
    })
    .then(async (re) => {
        var result = re.data.result as any;
        this.userInfo = result;
        this.token = getToken();
        clearInterval(this.timer);
        this.smsSendCd = 0;
        this.currentVerifyingType = null;
        this.successMessage("登录成功");
    });
}

此函数将在成功登录之后调用,也用于已登录状态的情况下,打开网页时调用,在handleLogin函数中,在请求登录api后编写续操作

.then(async (res) => {
    var data = res.data.result;
    setToken(data.accessToken);
    await this.getCurrentUser();
})

获取用户信息功能

登出, 将Token以及用户信息置空

<el-button
    :loading="loading"
    type="danger"
    style="width: 100%"
    @click.native.prevent="loGout">
    退出登录
</el-button>
logout() {
    setToken(null);
    this.token = null;
    this.userInfo = null;
},

至此,已完成了所有的工作

最终效果

项目地址

GitHub:matoapp-samples

到此这篇关于Vue elementUI实现免密登陆与号码绑定功能的文章就介绍到这了,更多相关Vue免密登陆与号码绑定内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: VueelementUI实现免密登陆与号码绑定功能

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

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

猜你喜欢
  • VueelementUI实现免密登陆与号码绑定功能
    目录前言登录功能绑定/解绑功能获取用户信息功能获取用户信息功能最终效果项目地址前言 前端代码的框架采用vue.js + elementUI 这套较为简单的方式实现,以及typescr...
    99+
    2022-11-13
    Vue elementUI免密登陆 Vue elementUI号码绑定
  • Android实现登陆界面的记住密码功能
    本文实例为大家分享了Android实现登陆界面记住密码功能的具体代码,供大家参考,具体内容如下 所需工具 一、复选框控件:CheckBox,二、SharedPreferences用于...
    99+
    2024-04-02
  • js实现登陆与注册功能
    本文实例为大家分享了js实现登陆与注册功能的具体代码,供大家参考,具体内容如下 1、首先在phpstudy文件中寻找到一个文件名叫 “www” 的文件  在里面创建html...
    99+
    2024-04-02
  • flask框架实现修改密码和免密登录功能
    目录修改密码功能免密登录修改密码功能 数据库部分: #重置密码 def reset_pass(phone,password): conn,cursor=get_conn(...
    99+
    2024-04-02
  • Pythonselenium+cookie实现免密登陆的示例代码
    目录获取cookies:携带cookies实现免密登陆:今天爬取airbnb的租房数据时,遇到了登陆问题。自己动手解决了一下。 我们知道,http是无状态的,那么网页如何实现用户登陆...
    99+
    2024-04-02
  • Android实现带有记住密码功能的登陆界面
    本文实例为大家分享了Android带有记住密码功能的登陆界面实现代码,供大家参考,具体内容如下 1、设计思路 主要采用SharedPreferences来保存用户数据,本Dem...
    99+
    2022-06-06
    登陆 界面 Android
  • Android如何实现登陆界面的记住密码功能
    这篇文章主要介绍“Android如何实现登陆界面的记住密码功能”,在日常操作中,相信很多人在Android如何实现登陆界面的记住密码功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android如何实现登陆...
    99+
    2023-06-30
  • SpringBoot + layui 框架实现一周免登陆功能
    ✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识...
    99+
    2023-09-04
    springboot layui 一周免登陆
  • java微信扫描公众号二维码实现登陆功能
    本文实例为大家分享了java微信扫描公众号二维码实现登陆的具体代码,供大家参考,具体内容如下前提条件: 微信公众平台为服务号, 2.服务号实现了账号绑定功能,即将open_id 与业务系统中的用户名有对应关系具体实现原理: 用户访问业务系统...
    99+
    2023-05-31
    java 二维码
  • SSM实现mysql数据库账号密码密文登录功能
    引言       咱们公司从事的是信息安全涉密应用的一些项目研发一共有分为三步,相比较于一般公司和一般的项目,对于信息安全要求更加严格,领导要求数据量和用户...
    99+
    2024-04-02
  • Vue实现登录记住账号密码功能的思路与过程
    目录实现思路这里有三种方法来存储账号密码:功能界面记住账号密码功能的具体实现密码加密localStoragecookies总结实现思路 用户登录时若勾选“记住我”功能选项,则将登录名...
    99+
    2024-04-02
  • Vue如何实现登录记住账号密码功能
    本篇内容主要讲解“Vue如何实现登录记住账号密码功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue如何实现登录记住账号密码功能”吧!实现思路用户登录时若勾选“记住我”功能选项,则将登录名和...
    99+
    2023-06-21
  • flask框架如何实现修改密码和免密登录功能
    这篇文章将为大家详细讲解有关flask框架如何实现修改密码和免密登录功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。修改密码功能数据库部分:#重置密码def reset_pass(phone,...
    99+
    2023-06-15
  • Android怎么实现保存QQ账号与密码功能
    今天小编给大家分享一下Android怎么实现保存QQ账号与密码功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1.UI界面...
    99+
    2023-06-30
  • Android实现保存QQ账号与密码功能(文件存储)
    目录1.UI界面2.构建工具类3.编写界面交互代码4.运行程序 写在前面:今天用保存QQ账号和密码的实战演练,带大家掌握Android存储中最基本的文件存储方式 文件存储是Andro...
    99+
    2024-04-02
  • Linux系统如何实现SSH免密码登陆远程服务器
    这篇文章将为大家详细讲解有关Linux系统如何实现SSH免密码登陆远程服务器,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。搭建Hadoop环境需要设置无密码登陆,所谓无密码登陆其实是指通过证书认证的方式登...
    99+
    2023-06-12
  • Vue如何实现记住账号密码功能
    这篇“Vue如何实现记住账号密码功能”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Vue如何实现记住账号密码功能”文章吧。实...
    99+
    2023-07-02
  • 基于Flutter实现手势密码加密与解锁功能
    目录前言1、绘制静态图形2、存储手势密码数据3、添加手势交互4、绘制、刷新密码线5、加入密码错误动画总结前言 密码的由来:在公元前405年,由古希腊和斯巴达的战争中,由于斯巴达盟友波...
    99+
    2024-04-02
  • php怎么实现修改登录密码功能?(代码示例)
    在网站开发中,用户账号系统是必不可少的一部分,而安全性是其核心之一。为了保障用户的账号安全,提供修改登录密码的功能是非常必要的。实现这一功能需要编写一些代码,下面我们来了解一下如何编写修改登录密码的 PHP 代码。首先,我们需要建立一个修改...
    99+
    2023-05-14
  • SpringBoot实现滑块验证码验证登陆校验功能详解
    目录前言一、实现效果二、实现思路三、实现步骤1. 后端 java 代码1.1 新建一个拼图验证码类1.2 新建一个拼图验证码工具类1.3 新建一个 service 类1.4 新建一个...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作