所以在我的简单学习网站中,我使用内置的ASP.NET认证系统.

我现在添加了一个用户表来保存他的zip、DOB等内容.我的问题是:

  1. 在新表中,键应该是用户名(字符串)还是用户ID,这是他们在asp_ tables中使用的看起来像GUID的数字.
  2. 如果最佳实践是使用丑陋的guid,有人知道如何获得它吗?它似乎不像名字(System.Web.HttpContext.Current.User.Identity.Name)那么容易访问
  3. 如果您建议我既不使用GUID,也不使用ASP.NET身份验证提供的用户名字段,那么如何使用ASP.NET身份验证呢?我喜欢的一个 Select 是使用用户的邮箱地址登录,但是如何使ASP.NET身份验证系统使用邮箱地址而不是用户名?(或者在那里没有什么可做的,只是我决定我"知道"用户名实际上是一个邮箱地址?

请注意:

  • 我不是在问如何获得GUID.NET中的userID列作为guid.
  • 用户名在ASP中是唯一的.NET身份验证.

推荐答案

如果用户名将是唯一的,我建议使用用户名作为表中的主键,这样做有几个很好的理由:

  1. 主键将是聚集索引,因此通过用户名搜索用户详细信息将非常快速.
  2. 它将阻止出现重复的用户名
  3. 您不必担心使用两种不同的信息(用户名或guid)
  4. 由于不必查找两位信息,这将使编写代码变得容易得多.

Asp.net相关问答推荐

目前不支持超过 65534 个段的跨区存档

我可以在 .net 核心中使用 Entity Framework 6(非核心)吗?

下载功能在 asp.net 的更新面板中不起作用

Window.Open 使用 PDF 流而不是 PDF 位置

为什么我不能在 ASP.net MVC 中使用服务器控件?

ASP.NET MVC 5 中的路由可选参数

带有邮箱地址参数的 WebApi 方法从 HttpClient 返回 404

如何获取 ActionLink 的工具提示?

在 ASP.NET MVC 中使用 Razor 创建可重用的 HTML 视图组件

如何在 ASP.Net 网络表单中使用标签?

如何从 ASP.Net 发布然后重定向到外部 URL?

<%# Eval("State") %> 或 <%# DataBinder.Eval(Container.DataItem, "state")%>

在 Visual Studio 2010 Professional 中找不到请求的 .Net Framework 数据提供程序

禁用 web.config 继承?

如何使div按钮提交其所在的表单?

IIS - 无法通过 ip 地址而不是 localhost 访问页面

IISExpress 找不到使用 Visual Studio 2013 运行 localhost 的 ssl 页面

System.Threading.Tasks - 限制并发任务的数量

ConfigurationManager.AppSettings 缓存

ModelClientValidationRule 冲突