Должен ли я использовать имя пользователя или идентификатор пользователя для ссылки на аутентифицированных пользователей в ASP.NET - PullRequest
27 голосов
/ 07 августа 2008

Итак, на моем простом обучающем веб-сайте я использую встроенную систему аутентификации ASP.NET.

Я добавляю таблицу пользователя для сохранения таких вещей, как его zip, DOB и т. Д. Мой вопрос:

  1. В новой таблице ключ должен быть именем пользователя (строка) или идентификатором пользователя, который представляет собой номер GUID, который они используют в asp_ tables.
  2. Если лучшая практика - использовать этот уродливый гид, кто-нибудь знает, как его получить? кажется, что это не так легко, как имя (System.Web.HttpContext.Current.User.Identity.Name)
  3. Если вы предлагаете мне не использовать ни поля (ни guid, ни поля userName, предоставляемые аутентификацией ASP.NET), то как мне это сделать с аутентификацией ASP.NET? Один из вариантов, который мне нравится, - это использовать адрес электронной почты пользователя в качестве логина, но как заставить систему аутентификации ASP.NET использовать адрес электронной почты вместо имени пользователя? (или там делать нечего, я просто решил, что «знаю», что userName на самом деле является адресом электронной почты?

Обратите внимание:

  • Я не спрашиваю, как получить GUID в .NET, я просто ссылаюсь на столбец userID в asp_ tables как на указатель.
  • Имя пользователя уникально в аутентификации ASP.NET.

Ответы [ 12 ]

0 голосов
/ 08 августа 2008

Я тоже согласен с Майком Стоуном. Моя компания недавно внедрила новую таблицу пользователей для внешних клиентов (в отличие от внутренних пользователей, которые проходят аутентификацию через LDAP). Для внешних пользователей мы решили сохранить GUID в качестве первичного ключа и сохранить имя пользователя как varchar с уникальными ограничениями на поле имени пользователя.

Также, если вы собираетесь хранить поле пароля, я настоятельно рекомендую хранить пароль в виде соленого хэшированного двоичного файла в базе данных. Таким образом, если кто-то взломает вашу базу данных, у него не будет доступа к паролям вашего клиента.

0 голосов
/ 07 августа 2008

Я согласен с Майком Стоуном. Я бы также предложил использовать GUID только в том случае, если вы собираетесь отслеживать огромное количество данных. В противном случае будет достаточно простого столбца с автоматически возрастающим целым числом (Id).

Если вам нужен GUID, .NET достаточно хорош, чтобы вы могли получить его простым ...

Dim guidProduct As Guid = Guid.NewGuid()

или

Guid guidProduct = Guid.NewGuid();
...