我希望能够在从我的网站发出的所有邀请链接中添加用户参考参数...例如:
http://site.com/invited_by?=ajraux
如何生成像" ajraux"这样的简短代码?对于我网站上的所有用户?它需要是数据库中的字段吗?可以当场制作吗?网络公司是如何做到这一点的?
由于
答案 0 :(得分:4)
你可以创建随机数并在base-36中对它们进行编码,这很简单:
rand(1e12).to_s(36)
首次使用时为每个用户生成一个并将其与用户一起存储。在随机令牌(在模型和数据库中)添加唯一约束,并在获得唯一性违规时生成新约束。如果您需要尝试超过五次以获得唯一值,您可能希望在某个地方记录您将看到的警告;如果您开始收到大量警告,请将1e12
提升至1e15
(或更高)。
这会给你一个随机查找的标记附加到每个用户,标记将是URL安全的,它们生成快速和容易,你不应该得到那么多的碰撞,并且它很容易回溯给用户的一个令牌。
答案 1 :(得分:0)
这样做的一种方法是使用数据库中用户的唯一标识符,例如“id”,但这也很危险,因为您对数据库的了解过多。
因此,你可以为之前的情况添加一个扭曲并加密和解密id,这样当它在url中时它被加密,然后当你收到它时你可以解密它并使用它。
答案 2 :(得分:0)
正如cjapes所说,使用ID不是一个好的解决方案而且mu太短了,答案对大多数情况都有好处。但是,如果您有一个提供虚荣URL的网站,例如 about.me ,那么每个用户都会有一个永久链接类型的列存储他们的虚荣URL。您可以在构建URL时使用该列中的值。
在接收端你可以这样做:
@referring_friend = User.find_by_permalink(params[:permalink])