Как разделить сеанс и cookie между приложением веб-формы asp.net и основным приложением asp.net? - PullRequest
1 голос
/ 15 мая 2019

у нас есть два проекта в веб-форме asp.net и ядро ​​asp.net.мы планируем объединить их с сессией (в одном домене).мой поиск показал в .net core единственный метод для outproc - это sql server и Redis.Кажется, не поддерживается сервер состояний в ядре .net.это верно?

мы были протестированы на состоянии сеанса сервера SQL, но не работали правильно, ядро ​​asp.net сохраняет данные сеанса в таблице с именем SQLState, но в asp.net сохраняет данные сеанса ASPStateTempSessions.таким образом, сессия не может быть разделена между ними.

у всех есть полный образец для общего объекта Session между ASP.NET (4.6 или выше) и ASP.NET CORE?

Ответы [ 2 ]

0 голосов
/ 16 мая 2019

Я не знаю, возможно ли это.Веб-форма ASP и сетевое ядро ​​ASP имеют разную архитектуру.

В качестве альтернативы, если вы хотите иметь общие ресурсы между проектами, вы можете создать веб-службу для обоих.

Например.Если вы хотите использовать междоменную и кросс-платформенную единую регистрацию, вы можете выполнить такой сценарий:

enter image description here

Все проекты будутДля проверки входа между приложениями необходимо пройти аутентификацию на www.sso.com.

Нам понадобится веб-служба Authenticate для проверки общей аутентификации.И мы могли бы поделиться другими данными для всех аутентифицированных пользователей.

enter image description here

Вот подробное объяснение и пример проекта:

https://www.codeproject.com/Articles/114484/Single-Sign-On-SSO-for-cross-domain-ASP-NET-appl-2

0 голосов
/ 15 мая 2019

Это больше, чем просто магазин. Вы правы в том, что ASP.NET Core не поддерживает State Server (по крайней мере, из коробки), поэтому вам, скорее всего, придется перейти на что-то вроде SQL Server или Redis, независимо от этого.

Однако большая проблема - шифрование / дешифрование. ASP.NET и ASP.NET Core используют полностью различных методов криптографии. ASP.NET использует «машинный ключ», где в качестве ASP.NET Core используются поставщики защиты данных и набор ключей. Даже при условии общего хранилища сеансов, если вы не заставите их говорить на одном языке здесь, вы не сможете расшифровать то, что было установлено одним из другого.

Однако в этом отношении вам может не повезти. ASP.NET MVC 5 поддерживает OWIN, а инфраструктура защиты данных в ASP.NET Core совместима с OWIN, поэтому, если вы настраиваете приложение ASP.NET для использования поставщиков защиты данных и , вы совместно используете одно и то же хранилище сеансов, хранилище ключей и имя приложения, тогда они могут просматривать куки друг друга. Однако я не думаю, что веб-формы участвуют в этом, даже если вы встраиваете их в приложение MVC 5. Таким образом, вероятно, нет никакого способа разделить хранилище сеансов между ними. Тем не менее, вы можете попробовать, я полагаю. Худшее, что может случиться, - это то, что это не сработает, и вы вернулись туда, где находитесь сейчас. В документации ASP.NET Core рассказывается, как все настроить .

...