HTTPS является основным требованием для запуска PWA.
Сертификаты уже не так дороги.
Просто учтите это в своих ежегодных расходах на хостинг.
Пока ваш HTTPS не будет запущен с сертификатом, возможно, вы могли бы использовать что-то вроде https://glitch.com/ для бесплатного тестирования
Вы могли использовать SqlMembershipProvider (или пользовательский поставщик, если Вы не используете MSSQL), и отклоните неаутентифицируемых пользователей из целого приложения кроме от страницы входа в систему. Эта проверка будет ограничена временем входа в систему, поскольку билет аутентификации будет сохранен или на сессии или как cookie на машине пользователя.
Больше деталей, в Как К: Используйте Членство в ASP.NET 2.0 и Исследование ASP.NET 2.0's Членство, Роли и Профиль
Вы звучите, как будто Вы "прокручиваете свою собственную" систему аутентификации.
Я изучил бы использование ASP.NET, созданного в системе аутентификации Форм, которая является наиболее часто используемой с Поставщиком Членства ASP.NET. Встроенные поставщики уже существуют для SQL Server, и можно создать собственного Поставщика Членства путем наследования Системе. Сеть. Безопасность. Базовый класс MembershipProvider.
По существу поставщики членства ASP.NET обычно работают путем установки клиентского cookie (также известный как Билет Аутентификации) в браузере клиента, когда-то клиент успешно аутентифицировал себя. Этот cookie возвращается к веб-серверу с каждым последующим запросом страницы, позволяя ASP.NET и таким образом Ваш код, для определения, как кто пользователь, обычно с одной строкой кода так:
string username = HttpContext.Current.User.Identity.Name;
// The above gets the current user's name.
if(HttpContext.Current.User.Identity.IsAuthenticated)
// Do something when we know the user is authenticated.
Вы затем не должны должны быть хранить что-либо в Состоянии сеанса. Конечно, если Вы хотите хранить определенные для пользователя данные в переменной сеанса (т.е. пользовательские данные, которые не могут быть частью аутентификации пользователя, возможно, любимый цвет пользователя и т.д.), затем любой ценой, можно сохранить это в переменной сеанса (после того, как получение его от DB, когда пользователь сначала аутентифицируется). Переменная сеанса могла быть сохранена на основе имени пользователя (берущий уникальные имена) и получила использующий код, подобный вышеупомянутому, которое заставляет имя текущего пользователя получать доступ к корректному объекту сессии.
Используя встроенные формы аутентификация также позволит Вам "защищать" области своего веб-сайта от неавторизованных пользователей с простым декларативным кодом, который входит в Ваш web.config, например:
<authorization>
<deny users="?"/>
</authorization>
Добавление вышеупомянутого к Вашему "основному" web.config гарантировало бы, что ни одна из Ваших страниц не доступна для неавторизованных пользователей (хотя Вы, вероятно, никогда не делали бы этого в действительности - это просто предназначено как пример). Используя Ролевого Поставщика ASP.NET в сочетании с Членством Поставщик даст Вам еще большую гранулярность по тому, кто может или не может получить доступ к различным разделам Вашего веб-сайта.