mysql - 如何在 RESTful API 中从用户的电子邮件生成唯一的 UID?

标签 mysql rest spring-rest

我正在为网站创建 WebService,其中我必须从用户电子邮件/生成UID名称。此过程应该仅在用户注册步骤中进行。就像这样,我们有我们的 twitter 唯一 ID。我心里有几个问题:

  1. 应该是客户端的责任还是WebService的责任?

    • 我认为应该是WebService。
  2. 如果 Web 服务负责,那么从 myname@example.com 生成 UID 的逻辑应该是什么。

    • 一种解决方案可能是从电子邮件中提取 myname 并将 user_id 附加到其最后。但对于自动生成的user_id(MYSQL)来说,这不是一个解决方案。此外,使用 UID 的整个想法是在浏览器中隐藏 URL 中的 user_id(整数),因此该解决方案将再次暴露 user_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;

最佳答案

您可以使用 php uniqid 函数创建用户的唯一 ID,并将其保存在用户选项卡的 unique_id 列中。它将是独一无二的 您可以使用下面的代码生成一些唯一的 ID。

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

关于mysql - 如何在 RESTful API 中从用户的电子邮件生成唯一的 UID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52014486/

相关文章:

MySQL 执行时间过长

mysql - SQL 连接两个查询,同一个表

php - 为什么西类牙语单词无法在完全匹配的全文索引中正确搜索

WCF 休息 : Is it possible to remove the namespace added to my response XML?

Django Rest Framework 不会同时显示多个 URL?

java - Spring Restful : Handling OPTIONS request

php和mysql插入输入数组

rest - RESTful API 是否随时都需要 CORS 实现?

spring-boot - 使用 Spring BOOT REST 和 Spring Data JPA 使用 Criteria API 实现复杂的搜索功能

java - 如果我想与 spring Rest shell 连接,我应该在 jhipster 应用程序中使用哪种类型的身份验证?