【问题标题】:Can I change asp.net mvc 5 identity user ID from string(GUID) to int我可以将 asp.net mvc 5 身份用户 ID 从 string(GUID) 更改为 int
【发布时间】:2015-12-29 14:51:51
【问题描述】:

我想知道为什么 asp.net mvc 5 Identity 用户默认使用 string(GUID) 作为 key 而不是 int?

有什么理由这样做吗?我知道可以将密钥更改为 int,但是这种更改是否是好的做法?

可能这个 id 保存在 cookie 中的某个地方,或者在 OAUTH 中使用,不建议这样做?

【问题讨论】:

    标签: asp.net-mvc-5 asp.net-identity katana


    【解决方案1】:

    我想到的两件事是 int 有一个限制,而 GUID 没有,如果我知道我的 ID 是 76,我可以知道至少 75 个用户的 ID。这通常不会被证明是有问题的,但我可以想象可能的情况。在 cookie 中不使用(至少不直接使用)用户 ID - 使用用户会话,然后通过其 ID 绑定到当前用户。所以我想答案是 90% 的安全性和 10% 的无限用户 ID 的组合。

    【讨论】:

    • 很好的论据,但是 asp.net 会在会话中存储这个用户 ID 吗?或者它可能存储其他东西?
    • 这是一个很好的论据,因为我可以看到在几个案例中传递了 ID。 OpenId Connect 令牌可能包含用户 ID,而且我还知道默认的“确认您的电子邮件”代码包括用户 ID 而不是用户名。
    【解决方案2】:

    可能有点晚了,但我刚刚写了一个答案 - 在默认的 ASP.NET 4.6 模板中修改什么以将用户 pk 更改为不同的类型(在我的情况下为 int)

    Change User Id type to int in ASP.NET Identity in VS2015

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • @YSC - 虽然我大体上完全同意,但在这种特殊情况下这样做没有意义:首先,链接指向另一个 SO 答案(所以我相当确定答案将留在原地),其次,这个答案很长,在这里重新发布它没有意义。
    • 你是对的。很抱歉我在审查过程中没有花足够的时间。值得庆幸的是,该标志存在争议,您的答案现在被删除的可能性很小。
    猜你喜欢
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2014-04-30
    • 1970-01-01
    • 2016-07-01
    相关资源
    最近更新 更多