我正在为网站创建 WebService,其中我必须从用户
的电子邮件
/生成
。此过程应该仅在用户注册步骤中进行。就像这样,我们有我们的 twitter 唯一 ID。我心里有几个问题:UID
名称
应该是客户端的责任还是WebService的责任?
- 我认为应该是WebService。
如果 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/