【项目】多种方式统一登录入口的设计方案

2023-05-16

在编写项目的时候,通常会遇到很多情况下,需要实现统一登录入口。统一登录入口通常指的是:能够实现手机号、邮箱、用户名等信息登录,且共用一个登录入口。

这种登录方式现在属于一种主流的登录方式,除此之外,移动端通常还有本机号码一键登录。

登录账号鉴别

鉴于各种登录账号(指的是手机号、邮箱、用户名等可以唯一鉴别用户的信息,以下统称登陆账号)的组成不一样,我们可以在后端对数据进行区分。

我们在后台对用户的数据进行记录,一般要使用一个数据表来进行存储。表结构类似这种id|name|phone|email|nick_name|desc 。那么我们在规划登录的时候,设置了手机号和邮件均可登录,且要求统一登录入口,该如何进行设计呢?

在登录的时候,我们需要根据用户的输入来判断用户登录使用的是什么登录账号。如果使用的是手机号,我们可以根据用户的输入(国内用户)判断是否为电话号码(数字/长度);如果使用的是邮箱,可以用特殊标识(@/.)来判断。但是这类的判断方法存在缺陷,如果还存在可以使用用户名进行登录的方式,需要进行各种验证,逻辑比较复杂,最终可能还需要进行登录字段的遍历操作。

如果使用初始字段进行登录设计,后续如果添加了一种登录方式,需要对数据库进行字段添加操作,修改困难,维护不便。所以,直接使用用户表进行统一登录功能的实现,并不灵活。

  1. 判断登录方式逻辑复杂
  2. 后续扩展便捷性差

数据库字段鉴别

在数据库的设计上,加记录比加字段更容易扩展。我们可以在登录的时候,创建一张专门用于维护登录的表,命名为 login_ticket 。在字段的设计上,我们可以记录:

字段名类型备注
idint/bigint表格数据段唯一标识
user_idint/bigint用户iD,关联用户表用户ID
user_namevarchar(255)用户名,用于登录时显示
login_typeint登录方式,规定每一个值代表何种登录方式
passwordvarchar(255)用户密码,如果第三方登录则记录 token

之后,我们就可以在 user 表中只存储和登录无关的字段信息了。例如如下设计:

字段名类型备注
idint/bigint用户唯一标识
nick_namevarchar(255)用户昵称
avatar_urlvarchar(255)用户头像路径
user_namesvarchar(255)用户的所有登录方式

这样,我们就得到容易扩展的记录登录方式的数据表了。如果需要增加登录方式,只需要增加 login_ticket 表格中的数据即可。

例如:

  • 在 user 表中,我们存储的数据为:

    idnick_nameavatar_urluser_names
    1Real/avartar/Real.jpg
  • 在 login_ticket 表中,我们存储的数据为:

    iduser_iduser_name(登录账户)login_typepassword
    100011123456789100(邮箱)123456
    100021xxx@qq.com1(手机号)123456

有了这样的实际数据之后,我们如果新增登录方式,也可以通过添加字段来直接实现。但是一个 user 是存在多个字段的,那么修改密码,是需要将所有 user_id 相同的字段都修改密码的。

所以在具体的项目中,需要优先使用第二种方式来实现多种方式登录操作。如果项目数据比较大,我们还可以进行数据库的分库分表操作来完成数据库的访问优化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【项目】多种方式统一登录入口的设计方案 的相关文章

  • Python使用Cython实例,速度提升150倍以上

    文章目录 1 什么是 Cython xff1f 2 用 Cython 编写1个函数1 xff09 安装 cython2 xff09 先编写1个纯python函数3 xff09 使用cython重写该函数4 编译 pyx 文件 3 运行cyt
  • RK3568-显示

    RK3568 显示 分辨率 720p xff1a 1280x720 1080p xff1a 1920x1080 2K xff1a 2560x1440 4K xff1a 3840x2160 接口 需要修改设备树 MIPI xff1a LCD
  • RK3568-SPI

    RK3568 SPI SPI xff08 serial peripheral interface xff09 支持以下特性 默认采用摩托罗拉 SPI 协议 支持 8 位和 16 位 软件可编程时钟频率和传输速率高达 50MHz 支持 SPI
  • Linux-固定USB转串口名称

    参考链接 https www cnblogs com WCH SoftGroup p 16516383 html udev简介 udev 是一个用户空间系统 xff0c 它使操作系统管理员能够为事件注册用户空间处理程序 udev 守护程序接
  • gstreamer

    gst discoverer 1 0 xff1a 查看媒体文件的编码 xff0c 帧率等信息 gst inspect 1 0 xff1a 找出可用的GStreamer元素及其功能 gst launch 1 0 xff1a 从命令行构建和运行
  • usb相关

    USB CDC类 Communication Device Class USB的CDC类是USB通信设备类 Communication Device Class 的简称 CDC类是USB组织定义的一类专门给各种通信设备 电信通信设备和中速网
  • 视频编解码

    色彩格式 参考链接 xff1a https blog csdn net luanfenlian0992 article details 124992465 rgb yuv 编码格式 参考链接 xff1a https blog csdn ne
  • kali linux 安装Docker

    kali linux 安装docker zhaomeng 64 kali sudo apt get install docker docker compose 启动docker service docker start 报错如下 zhaom
  • Ubuntu20.04修改环境变量失误导致开机循环——解决方法以及如何保存profile

    gedit etc profile配置Ubuntu环境变量时出现失误导致开机时输入密码后重复开机无法进入图画界面 解决方法 xff1a ctrl 43 alt 43 F1 F6 xff0c 我的是ctrl 43 alt 43 F2进入界面
  • Ubuntu中代理设置

    当我们没有梯子的时候 xff0c 我们不需要任何代理 xff0c 直接在网络配置中选择禁止或者自动 xff0c 火狐浏览器也选择自动就好 xff0c 当我们使用梯子以后 xff0c 我们得看梯子的代理端口 xff0c 让电脑代理选择手动 x
  • CentOS8 图形界面和命令行切换

    1 查看目前默认的启动默认 systemctl get default 命令行模式 multi user target 图形界面模式 graphical target 2 设置为图形界面模式 systemctl set default gr
  • Java实现微信(主、子商户模式)及支付宝支付

    一 业务需求 实现APP微信 支付宝支付 xff0c 后端需要做生成预支付单 xff0c 响应支付结果 xff1b 微信商户采用子商户模式 二 参考官方文档 微信普通商户 xff1a https pay weixin qq com wiki
  • Java判断整数是否为回文数

    回文数 xff0c 是指一个数的正序 xff08 从左到右 xff09 与其倒序 xff08 从右到左 xff09 相等的数 核心思想是把这个整数倒过来 xff0c 再与这个数进行比较 xff0c 若相等 xff0c 则此数为回文数 xff
  • geoserver集群部署

    geoserver集群部署 环境准备系统准备软件准备插件准备配置jdk安装tomcat部署geoserver安装mqgeoserver配置jms修改tomcat 启动文件新建broker xml放入cluster文件内容如下 三个节点均要新
  • Mathtype闪退、未嵌入office系统问题解决方法

    由于操作系统的设置和之前安装过的东西的不同 xff0c 每个人在安装mathtype时遇到的问题可能也不同 xff0c 本篇文章解决了mathtype的闪退 没有自动嵌入office的问题 安装过后出现的问题 xff1a 一 安装破解版后打
  • 在树莓派上搭建MQTT服务器

    一 MQTT协议 实现MQTT协议需要客户端和服务器端通讯完成 xff0c 在通讯过程中 xff0c MQTT协议中有三种身份 xff1a 发布者 xff08 Publish xff09 代理 xff08 Broker xff09 xff0
  • 树莓派和arduino的串口通信

    一 树莓派环境安装 1 安装GPIO模块 wget https span class token punctuation span span class token operator span sourceforge span class
  • Wifi模块ESP8266-01的初始化和编程环境的搭建

    ESP8266 01引脚图 xff1a Vcc接的是3 3V xff01 一 烧写AT固件 使用烧录工具插进电脑 xff0c 打开固件烧写程序 xff0c 烧入厂家提供的固件 测试 xff1a 打开串口助手XCOM xff0c 插拔TTL转
  • 阿里云平台+NodeMCU(arduino编程)实现MQTT收发【二】烧录NodeMCU

    这里首先要设置好阿里云平台 xff0c 参见上一篇文章 代码可以从这里下载 1 添加esp8266板子 文件 首选项 附加开发板管理器网址 xff0c 输入 xff1a http arduino esp8266 com stable pac
  • 阿里云平台+NodeMCU(arduino编程)实现MQTT收发【三】利用阿里云进行可视化开发

    应用开发 aliyun com 新建 输入应用名称 如果没有项目就新建一个项目 然后就是像PPT一样制作网页 xff0c 其中数据源配置需要关联产品和设备 xff0c 如下图所示 制作好之后发布即可 xff0c 如果不绑定自己的域名则需要登

随机推荐