Пользовательские элементы управления для ASP.NET полагаются на библиотеку Membership в System.Web (точнее, System.Web.Security).Пока вы используете эти элементы управления (например, элемент управления <asp:Login>
), у вас уже есть зависимость от System.Web.В этом случае любой слой вашего приложения может сделать что-то подобное для извлечения текущего пользователя:
using System.Web.Security;
...
MembershipUser user = Membership.GetUser();
Затем используйте user.UserName
для получения имени пользователя.
ОБНОВЛЕНОчтобы отразить понимание того, что слои размещены на отдельных серверах.
Я бы добавил метод StartSession () в BLL, который принимает имя пользователя в качестве параметра и возвращает идентификатор сеанса строки.BLL на сервере генерирует идентификатор сеанса (возможно, с использованием Guid) и использует кэш на стороне BLL для сохранения имени пользователя.Затем на стороне клиента установите файл cookie, содержащий идентификатор сеанса.Он будет отправлен вместе с веб-запросом.(В зависимости от того, как вы отправляете веб-запрос, вам может потребоваться установить значение cookie с помощью javascript.)
Таким образом, вам не нужно изменять сигнатуру ваших методов, но вы все равно можете получить доступ кимя пользователя из BLL с помощью кеша.Вы должны убедиться, что ваша страница входа в систему вызывает метод GetSession () и устанавливает cookie-файл сеанса, прежде чем отправлять дополнительные запросы.