我希望能够添加一个用户转诊PARAMS从我的站点发出的所有邀请链接...例如:如何为用户创建唯一标识符用于跟踪目的?
http://site.com/invited_by?=ajraux
我怎么能生成代码,短如“ajraux”为我的网站上的所有用户?它是否需要成为数据库中的一个字段?它可以在现场创建吗?网络公司如何做到这一点?
感谢
这样的我希望能够添加一个用户转诊PARAMS从我的站点发出的所有邀请链接...例如:如何为用户创建唯一标识符用于跟踪目的?
http://site.com/invited_by?=ajraux
我怎么能生成代码,短如“ajraux”为我的网站上的所有用户?它是否需要成为数据库中的一个字段?它可以在现场创建吗?网络公司如何做到这一点?
感谢
这样的您可以创建随机数和基36编码它们,简单的东西是这样的:
rand(1e12).to_s(36)
生成一个用于在第一次使用的每个用户,并将其与用户存储。在您的随机标记(在您的模型和数据库中)上添加一个唯一约束,如果您违反唯一性,则生成一个新约束。如果您需要尝试五次以上才能获得唯一值,您可能需要在某处记录警告,如果您开始收到很多警告,那么请将1e12
上限为1e15
(或更高)。
这会给你一个随机的令牌附加到每个用户,令牌将是URL安全的,他们快速和容易产生,你不应该得到那么多的碰撞,并且它会很容易回溯从令牌到用户。
一种方法是使用用户的唯一标识符,说“ID”,这是在数据库中,而这也是危险的,因为你透露太多有关数据库。
所以你可以添加一个扭曲到以前的情况,加密和解密的ID,这样当它在URL中它被加密,然后当你收到它,你可以解密和使用它。
正如cjapes所说,使用ID并不是一个好的解决方案,亩太短的答案对于大多数情况是很好的。但是,如果您有一个提供虚荣URL的网站,例如about.me,那么每个用户将拥有一个永久链接类型的列,用于存储其虚荣URL。构建URL时,您可以使用该列中的值。
在接收端,你可以这样做:
@referring_friend = User.find_by_permalink(params[:permalink])
你怎么可以做一个加密解密,并保持其结果短期,6个字符? – AnApprentice 2012-03-03 01:39:04