2015-03-23 4 views
1

Моя команда в настоящее время использует WebForms для проектов, но я пытаюсь убедить всех переключиться на MVC. Одна из проблем, с которыми я сталкиваюсь, - это аутентификация. Я не могу понять, как реализовать наш процесс входа в систему для работы с MVC.ASP.NET Пользовательская аутентификация без магазина

Наша аутентификация осуществляется в основном через веб-службу (мы передаем имя пользователя & пароль и имейте в виду, если оно действительное или нет), но иногда мы используем ActiveDirectory для входа в систему.

Прямо сейчас мы используем sessionstate для хранения информации о личном письме. Как перевести это на ASP.NET MVC? Я много читал о различных вещах - претензиях, ролях, MembershipProvider, IProvider, ASP.NET Identity, OWIN, но ASP.NET развивается так быстро, что я боюсь, что я читаю старую информацию о StackOverflow.

ответ

0

В настоящее время мы используем sessionstate для хранения информации о пользователе, зарегистрированного лично.

Не делайте этого. Когда-либо. Не в WebForms, а MVC. Это очень небезопасно и легко подделано. Сессия никогда не должна использоваться для каких-либо действий с аутентификацией или авторизацией. Кроме того, Sessionstate является изменчивым, и IIS может сбрасывать сеанс в любое время, теряя синхронизацию с вашей аутентификацией.

Решение вашей проблемы очень просто. У вас уже есть аутентификация в вашем веб-сервисе (хотя я сомневаюсь, будет ли это безопасно, учитывая методы проверки подлинности Sessionstate, но это другой аргумент). Все, что вам нужно - это часть аутентификации, которая легко предоставляется FormsAuthentication, чтобы настроить cookie для входа в систему.

Вы подтверждаете свою услугу, если вам это удалось, вы вызываете FormsAuthentication.SetCookie(), а затем добавляете [Авторизовать] ко всем методам действий MVC, которые вы хотите защитить. Это действительно так просто.

Если вам нужна информация о пользователе, вы должны создать пользовательскую реализацию IIdentity и/или IPrincipal, которая предоставляет эту информацию, защищая ее (защищенную зашифрованным файлом cookie) и легкодоступную.

+0

Awesome, спасибо! Это то, что я собирался сделать, если бы не получил ответа. –

Смежные вопросы