多信息登录、检测用户信息是否完善且引导补全

大家好,我是雄雄,欢迎关注:穆雄雄的博客

前言

现在是2022年4月28日13:41:29

今天分享两块内容。

1.需求:用户可以通过手机号、邮箱来注册我们的系统,用户完成之后,可以去完善自己的个人信息,比如修改手机号,邮箱以及用户名。下次上来,用户可以使用手机号、邮箱以及用户名三种中的任何一种方式登录系统。

2.登录系统之后,检测用户信息是否完善,比如手机号、邮箱、用户名等,如果不完善,则引导用户去完善个人信息,完善了之后就可以用不同信息对其账号登录。

实现方法

使用手机号、邮箱、用户名以及账号登录系统

其实这个实现起来挺简单的,就是当时绕了很大的坑,给绕进去了。。。。刚开始想了个很简单的方法,就是:判断当前输入的信息长度是不是11位,是的话就是手机号,不是的话,看看有没有@符号,有则是邮箱,否则是账号;但是后来仔细琢磨了下,万一有的用户的账号正好也是11位呢,岂不是直接就乱了。

像这样的需求,直接可以在后台的sql中实现,但当时写sql的时候写了好几种形式:

第一种:

	SELECT * FROM blade_user WHERE (email='muxiongxiong' AND PASSWORD = 'muxiongxiong')OR (NAME = 'muxiongxiong'  AND PASSWORD = 'muxiongxiong')OR (phone = 'muxiongxiong'  AND PASSWORD = 'muxiongxiong')OR (account = 'muxiongxiong'  AND PASSWORD = 'muxiongxiong')

第二种:

	SELECT * FROM blade_user  
WHERE email || NAME || phone || account LIKE '%muxiongxiong%'  AND PASSWORD = 'muxiongxiong'

第三种:

	SELECT * FROM blade_user  WHERE (email= 'muxiongxiong' OR NAME= 'muxiongxiong' OR phone= 'muxiongxiong' or account ='muxiongxiong')  AND PASSWORD = 'muxiongxiong'

第一种和第三种基本上一样,第二种写法比较新奇,思路是这样的,将这几个字段,用户名,邮箱,电话,账号都拼接在一起,然后通过模糊查询的like去匹配,然后和密码比对进行查询。这几种方式的效率基本都差不多,用哪种都可以。前提是得限制用户的手机号,邮箱,账号以及用户名都是唯一的,极端情况下的话,就是A的账号和B的手机号一样,或者其他字段一样,可能会查询出来多条数据。

刚开始绕弯是因为我把手机号、邮箱等这几个字段理解成了不一样的了,于是结果总是有好多个,还以为自己的sql写错了呢,后来朋友看出来了问题所在,一语指出…

检测用户信息是否完善,否则引导其去完善

登录系统之后需要先拿到当前用户的信息,如果检测到手机号等信息都是完整的,就不需要操作,否则弹框提醒用户去完善个人信息,如下图所示:

点击确认即可直接去个人中心完善自己的信息。

关于弹出框的时机,之前考虑过一进首页就加载,弹出一遍;但是当在使用的过程中,发现这样用户体验度太不好了,包括刷新当前页面的时候也会出现,所以这种方法果断放弃。于是想到了加个标识,每隔20分钟弹出一次,最后发现这种方法在页面加载的时候,也会重复执行,也放弃了。

后来同事用了个别的方法,就是用户首次登陆的时候检测,然后弹出框。通过session的方法来实现的,效果还不错,下面是实现的代码:

	 //查询当前用户的信息getCurrentUserInfoDetail(){if(!sessionStorage.getItem("isReload")){//存入sessionsessionStorage.setItem("isReload","true");if(!this.isShowUserInfo){this.isShowUserInfo = true;getCurrentUserInfo().then(res=>{this.userDetails = res.data.data;//查看手机号,邮箱,用户名是否为空,是的话跳转到个人信息进行维护if(this.userDetails.phone == null || this.userDetails.email == '' || this.userDetails.name == ''){//弹出确认的框this.$confirm('您的个人信息不完善,请前往个人信息进行维护', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {//确定走这里console.log("确定");this.$router.push({path: '/info'});}).catch(() => {//取消的话走这里});}});}}},//取消的话走这里});}});}}},

sessionStorage就是vue页面使用的session,不用导入,可以直接拿出来用,给session中设置值: sessionStorage.setItem("isReload","true");,从session中获取值:sessionStorage.getItem("isReload"),这样就可以实现初次登录提醒,后面不管在怎么加载都不会提醒了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PNG 图片压缩原理解析

转载自 PNG 图片压缩原理解析 什么是PNG PNG的全称叫便携式网络图型(Portable Network Graphics)是目前最流行的网络传输和展示的图片格式,原因有如下几点: 无损压缩:PNG图片采取了基于LZ77派生算法对文件进行压缩&…

element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 前言 现在是2022年5月3日11:47:15!劳动节假期已经过去了三天了,今天是被封家里的第7天,也是解封的第一天。 说实话,在家里的工作效率一点都…

TypeScript 2.5 发布,增加语言级重构

在 TypeScript 2.5 版本中,Microsoft 专注于提高开发人员的生产力,其范围已经超出了代码编辑器所提供的常见功能。 习惯于类型语言(如 C#)的开发人员喜欢使用那些可以轻松执行常见重构的工具。现在 TypeScript 可以利…

element ui实现多层级复杂表单的操作(添加与回显)之添加功能实现

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 前言 现在是2022年5月3日13:35:15!文接上篇。[element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作](element ui实现多层级复杂表单的操…

Entity Framework Core Like 查询揭秘

在Entity Framework Core 2.0中增加一个很酷的功能:EF.Functions.Like(),最终解析为SQL中的Like语句,以便于在 LINQ 查询中直接调用。 不过Entity Framework 中默认提供了StartsWith、Contains和EndsWith方法用于解决模糊查询,那…

element ui实现多层级复杂表单的操作(添加与回显)之回显功能实现

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 前言 现在是2022年5月3日17:02:30!文接上两篇。 [element ui实现多层级复杂表单的操作(添加与回显)之表单操作交互操作](element ui实现多层级复杂表单…

在Mac的Docker中运行DotNetCore2.0

最近学习Angular4,服务端准备使用DotNetCore API来实现,本文简单介绍下在Mac中怎样将DotNetCore程序部署在Docker中,并使用Nginx做反向代理让程序可以跑起来。 具体步骤如下 安装Docker拉取DotNetCore镜像使用VS For Mac创建DotNetCore应用…

springboot实现复杂业务下的更新操作

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 前言 现在是2022年5月4日19:25:55!今天写了个这样的功能: 某用户在一天内有多个训练项目,比如:晨跑,有氧训练,跳绳这…

elementui解决el-dialog不清空内容的问题,el-dialog关闭时销毁子组件

大家好,我是雄雄,欢迎关注微信公众号:雄雄的小课堂 前言 现在是2022年5月5日22:48:21! 今天在使用element-ui中的el-dialog的时候遇到了个这样的问题:页面上点击添加的按钮,弹出el-dialog对话框&#xff…

MySQL 中的重做日志,回滚日志以及二进制日志的简单总结

转载自 MySQL 中的重做日志,回滚日志以及二进制日志的简单总结 MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志…

c语言分离三位数

#include<stdio.h> main(){ int k,l,m,n;printf("请输入一个三位数"); scanf("%d",&k);lk/100;mk/10%10;nk%10;printf("这个三位数的百位是:%d\n",l);printf("这个三位数的十位是:%d\n",m);printf("这个三位数的个位是…

分布式ID自增算法 Snowflake

近在尝试EF的多数据库移植&#xff0c;但是原始项目中主键用的Sqlserver的GUID。MySQL没法移植了。 其实发现GUID也没法保证数据的递增性&#xff0c;又不太想使用int递增主键&#xff0c;就开始探索别的ID形式。 后来发现twitter的Snowflake算法。 一开始我尝试过直接引用N…

java中,根据指定日期显示出前n天的日期

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 今天分享的是&#xff1a;在java中&#xff0c;根据指定日期显示出前n天的日期 效果如下&#xff1a; 大家注意观察上面的时间&#xff0c;我传入的时间是&#xff1a;2022年5月9日21:28:…

jdbc实现批量给多个表中更新数据(解析Excel表数据插入到数据库中)

大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂 前言 现在是&#xff1a;2022年5月19日08:01:51 今天遇到了个这样的需求&#xff0c;解析excel表中的数据&#xff0c;以JDBC的方式&#xff0c;将数据批量更新至不同的数据表中。注意&am…

.Net Core 全局配置读取管理方法 ConfigurationManager

最近在学习.Net Core的过程中&#xff0c;发现.Net Framework中常用的ConfigurationManager在Core中竟然被干掉了。 也能理解。Core中使用的配置文件全是Json&#xff0c;不像Framework使用的XML&#xff0c;暂时不支持也是能理解的&#xff0c;但是毕竟全局配置文件这种东西还…

Http 持久连接与 HttpClient 连接池

转载自 Http 持久连接与 HttpClient 连接池 一、背景 HTTP协议是无状态的协议&#xff0c;即每一次请求都是互相独立的。因此它的最初实现是&#xff0c;每一个http请求都会打开一个tcp socket连接&#xff0c;当交互完毕后会关闭这个连接。 HTTP协议是全双工的协议&#x…

jdbc解析excel文件,批量插入数据至库中

“大家好&#xff0c;我是雄雄&#xff0c;欢迎关注微信公众号&#xff1a;雄雄的小课堂”前言现在是&#xff1a;2022年5月20日09:32:38今天遇到了个这样的需求&#xff0c;解析excel表中的数据&#xff0c;以JDBC的方式&#xff0c;将数据批量更新至不同的数据表中。注意&…

线程2

public class test{/*** 测试延迟继承* param args*/public static void main(String[] args) {Cat catnew Cat();cat.start();//启动线程&#xff0c;会导致run函数的运行Dog dognew Dog();//创建一个线程对象Thread tnew Thread(dog);t.start();}} //继承Thread创建线程 clas…

.NET及.NET Core系统架构

.NET 官方架构指南 Microservices and Docker Containers Web Applications with ASP.NET 官网地址&#xff1a;https://www.microsoft.com/net/learn/architecture 三层及多层架构 Multitier Architecture ASP.NET N-Tier Architecture Schema Visual Studio N-Tier Examp…

Spring Boot 自动配置的 “魔法” 是如何实现的?

转载自 Spring Boot 自动配置的 “魔法” 是如何实现的&#xff1f; Spring Boot是Spring旗下众多的子项目之一&#xff0c;其理念是约定优于配置&#xff0c;它通过实现了自动配置&#xff08;大多数用户平时习惯设置的配置作为默认配置&#xff09;的功能来为用户快速构建出…