Pergunta

Eu tenho um aplicativo que precisa para bater o ActiveDirectory para obter permissão do usuário / funções na inicialização do aplicativo, e persistem por toda parte.

Eu não quero bater AD em cada formulário para verificar novamente as permissões do usuário, então eu gostaria função do usuário e, possivelmente, outros dados do usuário logado para ser globalmente acessível em qualquer forma dentro do aplicativo, de modo I pode corretamente hide funcionalidade, botões, etc., quando necessário.

Algo como:

if (UserProperties.Role == Roles.Admin)
{
    btnDelete.Visible = false;
}

O que são as melhores práticas para o armazenamento de dados do usuário estática em um aplicativo do Windows? Soluções como um Singleton, ou variáveis ??globais podem funcionar, mas eu estava tentando evitar estes.

é um objeto Usuário que se passou em torno de contructor de cada forma tão ruim?

Foi útil?

Solução

Thread.CurrentPrincipal com ou o WindowsPrincipal , a GenericPrincipal ou a sua entidade personalizada. Em seguida, você pode apenas chamar IsInRole :

if (Thread.CurrentPrincipal.IsInRole(Roles.Admin)) {
   btnDelete.Visible = false;
}

Outras dicas

Talvez meu julgamento é obscurecido pelo meu uso frequente de javascript, mas eu acho que se você tem algo que é significava para ser global, em seguida, usando variáveis ??globais está bem.

Global é ruim quando você está expondo coisas globalmente que não deveriam estar. Global é bem se é semanticamente correta para o uso pretendido dos dados.

Você pode usar o provedor de perfil do asp.net em você do Windows App. Check it out @ http://fredrik.nsquared2.com/viewpost.aspx? PostID = 244 & showfeedback = true

Hope isso ajuda, Bruno Figueiredo http://www.brunofigueiredo.com

Os dados estáticos (ou um singleton) parece muito bem para isso, se você quiser escopo dos dados para a instância do aplicativo (ou AppDomain).

No entanto, dado que você está falando em vigor cache credenciais de segurança de um usuário, você pode querer pensar cuidadosamente sobre brechas de segurança. Por exemplo, o que acontece se o usuário deixa o aplicativo em execução para os dias? Eles poderiam estar realizando operações em seus dias de idade credenciais em vez de suas credenciais mais atual. Dependendo do que você está garantindo que você pode ser melhor para verificar as credenciais de encomenda ou, pelo menos, expirando as credenciais em cache periodicamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top