Asp.net 我走错方向了吗?
这是我的第一个MVC/LINQtoSQL应用程序。我在ASP.NET中使用现成的SQL成员身份通过我的系统跟踪用户 正如大多数人所知,UserId是一个guid,很好。然而,为了链接系统中其他用户创建的表,我决定使用username而不是userid。我这样做的原因是:Asp.net 我走错方向了吗?,asp.net,asp.net-mvc,linq-to-sql,asp.net-membership,Asp.net,Asp.net Mvc,Linq To Sql,Asp.net Membership,这是我的第一个MVC/LINQtoSQL应用程序。我在ASP.NET中使用现成的SQL成员身份通过我的系统跟踪用户 正如大多数人所知,UserId是一个guid,很好。然而,为了链接系统中其他用户创建的表,我决定使用username而不是userid。我这样做的原因是: 用户名是唯一的 它避免了我在处理db函数时必须进行额外调用 例如:我不必根据用户名查找userid来创建新的故事;我只需将User.Identity.Name插入到故事表中 现在我确实遇到了一些棘手的问题,这似乎与此有关。它在我
但是,此应用程序严重依赖用户名。每个用户只创建一个故事。然后,他们使用:mysite/username链接到自己的故事。因此,应用程序将永远不允许他们更改用户名。这可能会给那些只看到链接不再存在的人带来一场噩梦。我使用了与您相同的方法,而且效果很好。您的应用程序表和成员数据库中的表之间是否存在关系?如果是这样的话,您可能希望删除这种关系。我唯一的想法是为了将来验证您的应用程序,userid将为用户更改用户名提供灵活性,因为userid将保持不变(例如)。
但这必须符合您的应用程序要求。同样,需求往往会在没有开发人员控制的情况下发生变化。请注意您对用户名唯一性的评论。安妮塔·塔克巴思和西摩·巴特斯结婚的那一刻,阿塔克巴思突然想要成为一对
只是一个想法 这是不好的,原因如下:
编辑:修改格式。我仍在学习如何使我的帖子看起来更好:-)如果您实施此操作的原因是为了更方便地访问用户的GUID,我建议让FormsAuthentication.SetAuthCookie将用户的GUID用作name属性,并在整个应用程序中使用User.Identity.name
使用用户名作为唯一标识符可能会在将来产生不良后果。如果您希望允许用户在将来更改用户名,您将很难实现这一点。很高兴知道我不是唯一一个。现在不存在链接。只是澄清一下-由于这个bug,我不再与我创建的表和aspnet_用户表有关系。这让我有点不安,但我认为这不应该是个问题。你刚才说得很好!对于我的应用程序,用户名永远不会更改。谢谢。是的,非常好-按照@Jakub所说的(但用更有趣的方式来表达)。我说的是用户登录名,所以它们是独一无二的。现在,关于加入的问题,对于selects是这样的,但是插入呢?所以我创建了一个新的故事,新的评论,等等。难道我不需要首先从用户名中获取用户名,然后插入吗?这就是我试图避免的。我通常不喜欢问这个问题,但我现在不得不问:你为什么要避免它?在大多数情况下,插入将明显少于选择。因此,性能在这里不应该是一个问题。如果没有表现,你还想避免什么?我觉得你是在用一个严肃的价格交易一些琐碎的东西。我想我只是采取了稍微简单一点、不那么防弹的方式,因为应用程序用户名是100%唯一的。我现在想不出它有什么坏处…仅供参考-我在我的原始帖子中添加了更多的上下文。一个稍微简单的方法是一旦用户通过身份验证,将id保留在会话中,并在需要时使用它。