none
Controle de acesso (nível de acesso do usuário) RRS feed

  • Pergunta

  • Olá pessoal,

    eu já fiz tantas pesquisas sobre esse assunto de controle de acesso para WinForms C# (acesso ao programa, permissão para incluir, excluir, alterar, consultar), mas não achei nenhum fórum, site, post, blog, etc, que me ajudasse. Achei algumas coisas como T2Ti ERP, Membership, CodeAccessPermission, mas não consegui aplicar.

    O que estou precisando é saber como fazer esse controle. Por enquanto eu estou pensando em criar uma tabela pra relacionar o usuário, o formulário e essas permissões, e em cada formulário do sistema (incluindo a tela principal para poder acessar o programa) teria que fazer essa verificação.

    Exemplo: no botão inserir será verificado se o usuário tem permissão de inserir. Se não tiver, será exibida uma mensagem e interrompido o processo. Para as opções de exclusão, alteração e consulta será a mesma coisa.

    Eu só acho que esse procedimento é muito demorado, muito manual, acho que até meio arcaico, pois em cada operação vou ter que fazer consulta no banco de dados pra ver se ele passou a ter permissão.

    Alguém conhece alguma forma mais automatizada ou outro jeito de melhorar esse método?

    Agradeço pela atenção.


    quinta-feira, 22 de maio de 2014 02:23

Respostas

  • conhece como é feito a regra de permissão de FTP?

    da um find, é legal... mas pensa agora dessa forma:

    Cls_Permissao.financeiro = 1;

    Cls_Permissao.fiscal = 3;

    Cls_permissao.contabil = 2;

    no banco, no usuario, tem uma coluna para cada "modulo" e cada valor representa um dado

    1 = acesso

    2 = alteração

    3 = exclusão

    assim vc controla o modulo de todo mundo, independete de " grupo "

    quinta-feira, 22 de maio de 2014 13:27

Todas as Respostas

  • Bom, se você quiser fazer sua própria autenticação e controle de permissões do zero,poderá utilizar cache, singleton ou classes estáticas,  assim você não vai ficar indo ao banco em cada operação. 


    quinta-feira, 22 de maio de 2014 03:32
  • Bom dia Vinicius,

    então existe alguma outra forma já meio pronta pra fazer o controle?

    quinta-feira, 22 de maio de 2014 10:03
  • Ora bolas, usa classe Static do tipo inteiro e faz IF.

    desligado : 0
    user : 1
    gerente : 2
    adm : 3

    Cls_Sistema.permissao = 1;

    if(Cls_Permissao < 2)
    {
       btn_incluir.Enabled = false;
    }

    quinta-feira, 22 de maio de 2014 12:05
  • Eu queria fazer o controle por usuário e por programa, só que não por classificação como vc colocou: user, gerente, adm.

    Desse jeito eu vou estar generalizando todos usuários para acessarem os mesmos programas. Ou seja, o usuário no nível user vai acessar os programas 1, 2 e 3. Então todos os usuários desse nível vão acessar os mesmos programas.

    Do jeito que eu estou pretendendo fazer é permitir parametrizar programa por programa para cada usuário, exemplo: João que trabalha no financeiro tem acesso aos programas 1 e 3. Maria que também trabalha no financeiro, mas com funções diferentes, pode ter acesso aos programas 1 e 2. O programa 3 que é um relatório do caixa, por exemplo, são informações que ela não pode visualizar.

    Agora se eu usar esse método de classificar os dois usuários como user para ter acesso aos 3 programas, a usuária Maria vai ter acesso ao programa 3 (relatório de caixa).

    Entende?

    Além disso gostaria também de fazer o controle sobre permissão de inclusão, consulta, exclusão.
    quinta-feira, 22 de maio de 2014 13:16
  • conhece como é feito a regra de permissão de FTP?

    da um find, é legal... mas pensa agora dessa forma:

    Cls_Permissao.financeiro = 1;

    Cls_Permissao.fiscal = 3;

    Cls_permissao.contabil = 2;

    no banco, no usuario, tem uma coluna para cada "modulo" e cada valor representa um dado

    1 = acesso

    2 = alteração

    3 = exclusão

    assim vc controla o modulo de todo mundo, independete de " grupo "

    quinta-feira, 22 de maio de 2014 13:27
  • Daí no caso se eu definir o financeiro como 1 (acesso) para o usuário João, ele poderá acessar todas as telas e relatórios do financeiro sem restrição?

    Digamos que eu não vou liberar duas telas de adiantamento do módulo financeiro pra ele. Como eu faria?

    Obrigado por enquanto.

    quinta-feira, 22 de maio de 2014 14:13
  • mesmo esquema que antes ué

    porem vc vai fazer o IF direto na variavel que guarda o nivel de permissão daquele modulo.

    supondo assim

    Nathalia tem os seguintes previlégios:

    s

    Cls_Permissao.Financeiro = 1;

    Cls_Permissao.Contabil = 3;

    Cls_Permissao.Adm = 0;

    logo, a nathalia pode visualizar os dados do financeiro, fazendo um if do tipo

    if(Cls_Permissao.Financeiro < 2)
    {
       btn_alterar.Enabled = false;
    }

    ja no adm, ela nao pode nem ao menos acessar...

    quinta-feira, 22 de maio de 2014 14:23
  • Certo, então vou ter que fazer controle todo manual mesmo. Se o sistema tem 30 telas (cadastro, relatórios, alterações, etc) eu vou ter que fazer essas validações em cada tela, né?

    quinta-feira, 22 de maio de 2014 17:15
  • tipo isso.

    quando falei para vc estudar sobre como é feito no FTP não foi sem motivo.

    regra de grupos, regra de usuário e regra anonima.

    ja te dei toda a ideia amigo, com isso vc faz regra de grupos e regra de permissão individual, facilita sua vida.

    mas a base toda é montada na mão mesmo.

    quinta-feira, 22 de maio de 2014 17:47
  • Valeu cara, entendi a jogada.

    Vou seguir essa ideia.

    Obrigado!

    quinta-feira, 22 de maio de 2014 17:53
  • demoro meu velho, se for necessário eu explico a mesma coisa de quantas formas diferentes forem precisar até vc pegar a ideia ;-)
    quinta-feira, 22 de maio de 2014 18:02
  • Tranquilo brother, show de bola.
    quinta-feira, 22 de maio de 2014 18:30