Этот вопрос представляет собой немного структурный/дизайнерский вопрос, поскольку у меня возникают проблемы с разработкой наилучшего способа выполнения задачи.
В моем приложении MVC я использую DotNetOpenAuth (3.4) в качестве моего поставщика информации о регистрации и просто использую стандартный FormsAuthentication
для файлов cookie и т.д.
Текущая пользовательская таблица в БД:
- UserId (PK, uniqueidentifier)
- OpenIdIdentifier (nvarchar (255))
- OpenIdDisplay (nvarchar (255))
- Отображаемое имя (nvarchar (50))
- Электронная почта (nvarchar (50))
- PhoneNumber (nvarchar (50))
Поскольку UserId является явным идентификатором для пользователя (они должны иметь возможность изменить свой провайдер OpenId позднее), это ключ, к которому привязаны другие таблицы (для пользователя).
Это текущий код, который при успешной аутентификации создает временного пользователя и перенаправляет на Create Action.
switch (response.Status)
{
case AuthenticationStatus.Authenticated:
FormsAuthentication.SetAuthCookie(response.ClaimedIdentifier, false);
var users = new UserRepository();
if (!users.IsOpenIdAssociated(response.ClaimedIdentifier))
{
var newUser = new DueDate.Models.User();
newUser.OpenIdIdentifer = response.ClaimedIdentifier;
newUser.OpenIdDisplay = response.FriendlyIdentifierForDisplay;
TempData["newUser"] = newUser;
return this.RedirectToAction("Create");
}
И теперь для сути вопроса:
-
Является ли
response.ClaimedIdentifier
правильная часть информации для хранения против пользователя? -
Является ли
FormAuthentication.SetAuthCookie
предпочтительным способом создания аутентификации? Или есть лучший способ? -
Когда я вызываю SetAuthCookie, нет данных, относящихся к пользователю, кроме
ClaimedIdentifier
. Если я постоянно ссылаюсь на ихUserId
, лучше создать пользователя, а затем сохранить этоUserId
в cookie вместоClaimedIdentifier
? -
Если я использую этот UserId в нескольких местах, как я могу извлечь его из файла cookie или сохранить его где-то еще более логичным/полезным?
Немного длинный, но у меня возникли проблемы с поиском наилучшего способа сделать это/