Позвольте мне описать мою ситуацию:
Мы разрабатываем веб-приложение для создания сайтов.
Каждый созданный веб-сайт сохраняется в БД со всей дополнительной информацией.
Когда клиент просматривает один из этих веб-сайтов, он фактически просматривает корневое приложение, и с помощью идентификатора веб-сайта мы знаем, какие данные отправлять клиенту в каком макете, но все они поступают из основного корневого веб-приложения.
Я хочу создать управление пользователями и аутентификацию для этой системы, ДЛЯ КАЖДОГО ВЕБ-САЙТА.
Идея, с которой я пришел:
Создать в БД Users
таблицу, в которой будет столбец WebsiteID
.
Что касается аутентификации, я планировал создать несколько ручных функций, чтобы при каждом входе пользователя в систему система создавала cookie на компьютере клиента с WebsiteId и случайный GUID, который будет сохранен в нашей БД для обеспечения безопасности ( если GUID отсутствует, клиент может вручную создать cookie с помощью websiteId и взломать систему).
Вот как я планировал сделать это с классом HttpCookie:
// int websiteId -> the current website id.
// int userId -> the user id from the DB.
HttpCookie cookie = new HttpCookie("WebsiteAuthentication" + websiteId);
cookie.Values["WebsiteId"] = websiteId.ToString();
cookie.Values["UserId"] = userId.ToString();
cookie.Values["Guid"] = "SOME_RANDOM_GUID";
Когда мне нужно будет проверить, аутентифицирован ли текущий пользователь, я сравню куки-файл клиента (если он существует) и GUID куки-файла с GUID-файлом, сохраненным в БД приложений.
Это хороший способ решить мою проблему? Это защищено и достаточно безопасно?
Я буду рад узнать, что вы скажете об этом, может быть, я совершенно не в курсе ...
Надеюсь, мне было понятно. Спасибо всем,
Gal