Я хочу добавить некоторые функции управления ролями в мое приложение WinForm.К настоящему времени я добавил пользователей, роли и права в свою базу данных.Пользователь входит в систему с определенной формой, и приложение получает свою роль через службу.Теперь я хотел бы установить принципала потока, чтобы иметь возможность использовать информацию о роли в любом месте.
private bool Login(string trigram, string password)
{
using (var service = GetService())
{
//Permission.DummySet();
_currentUser = service.Login(trigram, password);
if (_currentUser != null)
{
Permission.DummySet();
return true;
}
else
{
MessageBox.Show("User unknown or incorrect password");
return false;
}
}
}
Класс разрешений:
public static class Permission
{
private static bool _isSet = false;
public static void DummySet()
{
if (!_isSet)
{
GenericPrincipal principal = new GenericPrincipal(
new GenericIdentity("Serge Karamazov"),
null);
AppDomain.CurrentDomain.SetThreadPrincipal(principal);
_isSet = true;
}
}
}
Метод Login работает нормально, за исключением того, что при входе в систему вызов Permission.DummySet () ничего не делает.Нет ошибок, нет исключений, но основной поток не установлен.Что странно, когда я раскомментирую строку перед вызовом service.Login (триграмма, пароль), принципал теперь правильно установлен.
Очевидно, что звонок в мой сервис - это проблема, но я не могу понять, почему.Служба является бизнес-службой, в которой я внедряю экземпляр моего уровня данных, используя ninject.Может быть, это как-то связано с моей проблемой?
Спасибо!