Hemul GM, в ответе я старался передать общую мысль в какую сторону двигаться, т.к. в вопросе была не вся инфамация о контексте.
Зачем приплетать сюда SOLID, видимо у тебя недостаточно знаний, что это и где используется.
Василий Банников, немного не по теме, ребята на dtf рассказывали, как писали свои dll для проксирования функций старых версий directx на новые, чтобы старые игры играть. Блин, уважаю людей которые подобные штуки делают, и догадались и хватило терпения воплотить.
Руслан, конечно, можно просто напрямую работать с Windows API, как я написал выше.
Более того вам надо очень тщательно подойти к тому что можно загружать. Пользователь может вместе с сборкой загрузить не управляемую DLL и импортировать функции оттуда, а что там будет, только догадки строить.
Василий Банников, В .NET Core нельзя импортировать DLL с WinAPI функциями?
Если этот импорт можно отследить, то тогда что делать с прокси-DLL.
PS хотя с прокси-DLL наверно не актуально т.к. все это рассматривается в контексте такой ситуации - тебе дают (студенты?)много сборок, которые надо у себя запустить, проверить результат и не хочется чтобы они что то ещё делали
if (foundedStudent != null){
Console.WriteLine($"Имя: {foundedStudent.name}");
Console.WriteLine($"Фамилия: {foundedStudent.surname}");
... и так далее
}
Nik Faraday, у тебя все правильно, просто ASP.NET не смогла нормально переварить форс-мажорную ситуацию. Разработчики не ожидают, что кто то руками будет куки частично удалять. Все ок.
По ошибке было понятно, что ASP.NET Core Identity не могла сгенерировать куку, мне было интересно в чем именно причина была.
Nik Faraday, это очень косвенная причина. Я понял в чем дело, ты просто частично удалил куку (там остались ещё две части) и ASP.Core при попытке её продлить выдавала внутреннюю ошибку.
Лучше вернуть SlidingExpiration, и руками поудалять все куки включая ai_session ai_user
new Claim(ClaimsIdentity.DefaultRoleClaimType, userEntity.Type.ToString()),
из за этого наверно и посыпалось - userEntity.Type.ToString() посмотрите, что отсюда возвращается,
наверно, что то такое что в куку прописать не получается
Ну и по хорошему лучше использовать метод Unauthorized вместо NotFound
Unauthorized(new ProblemDetails { Title = "User not found" });
NotFound - нужен для случаев когда клиент запрашивает некий ресурс с перманентой "пропиской" а метод его может найти у себя. Например если бы вы обрабатывали запрос типа "получить пользователя с заданным идентификатором". Лучше лишний раз не нарушать семантику HTTP ответов.
Ну и ещё :)) При неудачной аутентификации (то, что вы делаете называете аутентификацией) лучше обобщайте все ошибки в одну - "Неправильное имя пользователя или пароль, возможно пользователь не зарегистрирован". С точки зрения безопасности так лучше
Покажите, как вы создаете-настраиваете identity.
Вообще удаление куки тут должно быть не причем, больше похоже, что вы некоторое время назад сделали успешный SignIn, кука прописалась, а потом вы стали по другому формировать параметр identity, куку удалили, а новый механизм авторизации не работает