Как использовать IsInRole от членства ASP.NET в библиотеке DLL
Большинство реальных веб-приложений имеют по крайней мере одну библиотеку DLL. Если мы используем поставщик членства ASP.NET, как мы можем вызвать метод Roles.IsInRole в dll?
Возможность ссылки на HttpContext не является хорошей. Потому что у нас есть несколько инструментов консольных приложений, которые используют одну и ту же DLL для выполнения нескольких массовых операций.
1 ответ
Похоже, вам нужно отделить механизм членства от ASP.NET.
Здесь есть несколько хороших ресурсов о том, как ссылаться на поставщика членства ASP.NET из приложений Windows Forms, который будет работать аналогично для консольных приложений.
Лучший из них здесь (в VB.NET).
Однако все они страдают от одной и той же основной проблемы, заключающейся в том, что злонамеренный пользователь может изменить свою конфигурацию, чтобы использовать собственную базу данных авторизации. (Конфигурация ASP.NET недоступна для пользователей, поэтому у нас нет такой же проблемы.)
Поэтому лучшим подходом было бы либо напрямую запрашивать базы данных членства ASP.NET из вашего кода в ADO.NET (что не сложно: они довольно простые), либо использовать собственную реализацию базовых интерфейсов поставщика членства (detailer). на MSDN здесь). После этого вы можете попросить поставщика членства ASP.NET вызвать собственный код, чтобы определить, играет ли пользователь роль, и использовать этот код таким же образом из консольного приложения.