我想在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;
}
}
}
Permission类:
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;
}
}
}
除了我登录时,对Permission.DummySet()的调用不执行任何操作,Login方法工作正常。没有错误,没有异常,但是没有设置线程的主体。 奇怪的是,当我在调用service.Login(trigram,password)之前取消注释该行时,主体已正确设置。
显然,打电话给我的服务是问题所在,但我找不到原因。该服务是一项商业服务,其中我使用ninject注入了数据层的实例。也许与我的问题有关?
谢谢!