gpt4 book ai didi

c# - 公开个人资料的公开可见 UserId

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:07 24 4
gpt4 key购买 nike

我想为我网站上的每个用户创建一个公开的个人资料页面。与 SO 用户配置文件非常相似的东西。但我不想公开我用作 PK 的 Guid。我也不知道在网站的整个生命周期中在 url 中使用用户名会有多独特。

问题是 SO 本身如何在 url https://stackoverflow.com/users/242506/nubm 中执行此操作?可以删除用户名并且 url 仍然有效,但我是否应该在我的 Guid 旁边生成一些可公开查看的 UserId,我可以在指向个人资料页面的链接中使用它并在 url 中显示它?

我发现了类似的问题Should I expose a user ID to public?How do I create a "public" user profile page in ASP.NET (3.5)但它们并不是我想知道的。

最佳答案

你可以做两件事。

首先,您可以在数据库上创建一个额外的增量 ID,可以是在 ASP.NET 表上,也可以是一个新的映射表,并提供一个较小的数字连接到 Guid。为什么要少一些?因为 Guid 是 128 位并且太大而不能像在 url 上那样使用。

然后,您可以在 url 上使用与 Guid 关联的这个较小的数字。这里唯一的漏洞利用问题是任何人都可以找到您的所有用户列表。所以有这个公开所以如果你也公开它们就不是问题。所以使用他们 URL 中的数字来查找用户,用户名是为了更好的 SEO。号码保持不变,但名称可以更改,因此仅使用号码来定位用户。

第二种方案是将128位的Guid号压缩编码为73位的字符串。我选择了 73 个基本字符,因为 73 是 url 上允许的非转义字符。

以下是我发现的一些用于进行此转换的示例:

http://www.singular.co.nz/blog/archive/2007/12/20/shortguid-a-shorter-and-url-friendly-guid-in-c-sharp.aspx

http://jopinblog.wordpress.com/2009/02/04/a-shorter-friendlier-guiduuid-in-net/

http://buildmaestro.wordpress.com/2011/04/27/installscript-to-transform-guid-into-compressed-guid/

简单转换为 base64(来自 Dave Transoms)

public static string Encode(Guid guid)
{
string encoded = Convert.ToBase64String(guid.ToByteArray());
encoded = encoded
.Replace("/", "_")
.Replace("+", "-");
return encoded.Substring(0, 22);
}

public static Guid Decode(string value)
{
value = value
.Replace("_", "/")
.Replace("-", "+");
byte[] buffer = Convert.FromBase64String(value + "==");
return new Guid(buffer);
}

关于c# - 公开个人资料的公开可见 UserId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10583479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com