如何使用friendly_id用随机数混淆用户ID
Posted
技术标签:
【中文标题】如何使用friendly_id用随机数混淆用户ID【英文标题】:How to obfuscate user id with random number using friendly_id 【发布时间】:2016-10-04 19:45:13 【问题描述】:当我的新网站启动时,用户将很少。目前用户的个人资料页面是/users/:id,所以在早期阶段它将是/users/6,等等。我不想让其他人知道该网站有多少用户。我认为带有数字和字母的长 id(例如 uuid)看起来很难看,所以我更喜欢它只是数字。
如何使用friendly_id gem 来创建一个唯一的随机数slug?这也是我的第一个网站,因此任何有关用户 ID 混淆的“最佳实践”提示都会有所帮助。谢谢。
【问题讨论】:
【参考方案1】:这是来自现有项目的示例:
class User < ActiveRecord::Base
extend FriendlyId
friendly_id :email, use: [:slugged, :finders]
def normalize_friendly_id(email)
Digest::MD5.hexdigest(email)
end
def should_generate_new_friendly_id?
slug.blank?
end
end
您可以使用以下方法将 MD5 更改为随机数:
SecureRandom.random_number(1_000_000_000)
【讨论】:
如何确保随机数是唯一的,如果生成的随机数被使用了如何处理? 我相信FriendlyId
会为您解决这个问题。当它无法生成唯一 ID 时,它会回退到 uuid。为了明确起见,您可能需要添加 validates :slug, uniqueness: true
。以上是关于如何使用friendly_id用随机数混淆用户ID的主要内容,如果未能解决你的问题,请参考以下文章
rails,friendly_id,设计用户名不显示 slug
使用friendly_id时如何find_by_id(对于多态关系)
Rails gem“friendly_id”:如何在创建对象之前获得 slug 的实时预览
如何使用 friendly_id 从 URL 中删除特定单词 |铁轨上的红宝石