如何在RESTfulAPI中从用户的电子邮件生成唯一的uid?

bvuwiixz  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(336)

我正在为一个网站创建webservice,在其中我必须生成 UIDuseremail / name . 这个过程应该只在用户注册步骤中进行。就像这样,我们有自己独特的twitter id。我有几个问题想问:
这应该是客户的责任还是网络服务的责任?
我想应该是网络服务。
如果webservice负责,那么生成 UIDmyname@example.com .
一种解决办法是提取 myname 从电子邮件并将用户id附加到其最后一个。但对于 auto-generated user_id (mysql),这不是一个解决方案。另外,使用uid的整个想法是从浏览器的url中隐藏用户id(整数),因此这个解决方案将再次公开用户id。
另一个解决方案是在函数末尾附加一些随机数 myname 如果 ConstraintViolation 发生,然后尝试使用其他数字。但这只会花费用户注册操作的大量时间。
处理这个需求的理想和有效的方法是什么?
这是我的mysql表架构:

CREATE TABLE IF NOT EXISTS `user` (
  `user_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `unique_id` VARCHAR(45) NOT NULL,
  `email` VARCHAR(45) NOT NULL,
  `password` VARCHAR(500) NULL,
  `first_name` VARCHAR(45) NOT NULL,
  `last_name` VARCHAR(45) NOT NULL,
  `created_on` DATETIME NOT NULL,
  `gender` VARCHAR(2) NULL COMMENT 'M - male\nF - female\nO - other',
  UNIQUE INDEX `unique_id_UNIQUE` (`unique_id` ASC),
  UNIQUE INDEX `email_UNIQUE` (`email` ASC),
  PRIMARY KEY (`user_id`))
ENGINE = InnoDB;
sqougxex

sqougxex1#

您可以使用php uniqid函数创建用户的唯一id,并将其保存在用户tabl的unique\u id列中。它将是唯一的,您可以使用下面的代码生成一些唯一id。

<?php
echo uniqid("username");
?>

相关问题