none
C# permissao de usuario em tempo de execuçao RRS feed

  • Pergunta

  • Como faço para sempre 'guardar' o usuario logado em todos os forms do sistema? e em determinada açao verificar suas permissoes?

    win forms C#

    sexta-feira, 10 de junho de 2016 03:04

Respostas

  • Bom dia,

    Para guardar informações do usuário logado com Windows Form, você pode fazer de diversas formas.
    Uma opção (acredito ser a mais utilizada por ser simples) criar uma classe "static" com os atributos "static" (nome, permissão, etc) publicos. Assim, qualquer "Form" poderia acessar a class por ser "static" sem perder os dados, pois não precisa de instância.
    Outra opção, seria você cria uma classe com os atributos desejados e no momento do login você carrega os atributos da classe (nome, permissão, etc) e passa por parâmetro para o construtor de cada Form, neste caso você só precisaria passar esse objeto no construtor de cada form para não perder a instância.
    Uma terceira opção seria você gravar as informações do usuário logado (após fazer login) em uma tabela ou arquivo (xml, txt, etc) e assim consultar o usuário logado quando desejar.

    Como eu disse, existe inúmeras maneiras de fazer isso, se você optar por uma das três opções ou outra maneira mais conveniente e precisar de ajuda, pode postar.

    Espero ter ajudado.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Marcado como Resposta TiagoJesusTJS domingo, 12 de junho de 2016 12:38
    sexta-feira, 10 de junho de 2016 15:21

Todas as Respostas

  • Você precisa declarar uma Session.

    Referência: https://msdn.microsoft.com/pt-br/library/system.web.httpcontext.session(v=vs.110).aspx

    Sugiro a criação de um objeto usuário que contenha as informações necessárias para todas as páginas.
    Ex: 

    //Declaração
    Usuario usuario = new Usuario();
    usuario.id = 1;
    usuario.nome = "Gilberto";
    usuario.permissao = "Administrador";
    Session["Usuario"] = usuario
    
    //Requisição
    Usuario usuarioTeste = (Usuario)Session["usuario"];
    string permissao = usuarioTeste.permissao;
    
    Abs

    sexta-feira, 10 de junho de 2016 13:02
  • Fala TiagoJS. 

    Bem vc pode fazer de duas formas, uma é só carregar os forms que aquele usuario tem permissão,

    O que ja te poupa um certo trabalho de vc deixar armazenado o que ele pode ou não pode, ou pior ainda ficar realizando consultas no banco pra saber se no form abc ele pode isso ao aquilo. 

    A outra é o inverso do que falei vc vai guardar um dataset com os nomes dos forms e as permissões , ou realizar uma consulta no banco toda vez que o usuario for excutar uma ação. 

    Para limitar os forms vou deixar um exemplo usando o menu.

    seu sistema tem uma tela de login, nessa tela vc teria que realizar uma consulta pra saber qual o nivel do usuario, exemplo usuario/gerencia/diretoria. 

    de posse dessa informação no formPrincipal vc pode realizar um switch case asim.

     switch (label1.Text)
                {
                    case "Usuario":
              
                        this.FormAToolStripMenuItem.Visible = true;
                        this.sairToolStripMenuItem.Visible = true;
                        this.cadUsuáriosToolStripMenuItem.Visible = false;
                        this.emailToolStripMenuItem.Visible = false;
                        this.bancosToolStripMenuItem.Visible = false;
                        this.fabricantesToolStripMenuItem.Visible = true;
                        this.ferramentasToolStripMenuItem.Visible = false;                   
                        this.fornecedoresToolStripMenuItem.Visible = true;
                        this.alteraçãoToolStripMenuItem.Visible = true;                                   
                        this.FinanceirotoolStripMenuItem.Visible = false;
              
                        break;
    
                    case "Diretoria":
    
                                           this.FormAToolStripMenuItem.Visible = true;
                        this.sairToolStripMenuItem.Visible = true;
                        this.cadUsuáriosToolStripMenuItem.Visible = false;
                        this.emailToolStripMenuItem.Visible = true;
                        this.bancosToolStripMenuItem.Visible = true;
                        this.fabricantesToolStripMenuItem.Visible = true;
                        this.ferramentasToolStripMenuItem.Visible = true;
                                            this.fornecedoresToolStripMenuItem.Visible = true;
                        this.alteraçãoToolStripMenuItem.Visible = true;                                   
                        this.FinanceirotoolStripMenuItem.Visible = true;
    
                        break;
    
                   
                    case "Gerencia":
    
                                       this.FormAToolStripMenuItem.Visible = true;
    this.sairToolStripMenuItem.Visible = true;
    this.cadUsuáriosToolStripMenuItem.Visible = false;
    this.emailToolStripMenuItem.Visible = false;
    this.bancosToolStripMenuItem.Visible = false;
                        this.fabricantesToolStripMenuItem.Visible = true;
                        this.ferramentasToolStripMenuItem.Visible = false;                    
                        this.fornecedoresToolStripMenuItem.Visible = true;
    this.alteraçãoToolStripMenuItem.Visible = true;                                   
                        this.FinanceirotoolStripMenuItem.Visible = false;
                        break;
    
                   

    Existem 3 tipos de usuarios no sistema . 

    FinanceirotoolStripMenuItem

    é um item do menu que chama o form Financeiro. como usuario não tem acesso ele não é mostrado. Visible = false;

    Dessa forma enquanto o sistema estiver aberto com aquela matricula de "Usuario" o Form Financeiro não é carregado.

    Espero ter ajudado.

    Att, Wsti.

    sexta-feira, 10 de junho de 2016 14:31
  • Bom dia,

    Para guardar informações do usuário logado com Windows Form, você pode fazer de diversas formas.
    Uma opção (acredito ser a mais utilizada por ser simples) criar uma classe "static" com os atributos "static" (nome, permissão, etc) publicos. Assim, qualquer "Form" poderia acessar a class por ser "static" sem perder os dados, pois não precisa de instância.
    Outra opção, seria você cria uma classe com os atributos desejados e no momento do login você carrega os atributos da classe (nome, permissão, etc) e passa por parâmetro para o construtor de cada Form, neste caso você só precisaria passar esse objeto no construtor de cada form para não perder a instância.
    Uma terceira opção seria você gravar as informações do usuário logado (após fazer login) em uma tabela ou arquivo (xml, txt, etc) e assim consultar o usuário logado quando desejar.

    Como eu disse, existe inúmeras maneiras de fazer isso, se você optar por uma das três opções ou outra maneira mais conveniente e precisar de ajuda, pode postar.

    Espero ter ajudado.

    Att,


    Se a resposta contribuiu com seu aprendizado por favor marque como util, se solucionou seu problema marque como resposta.

    • Marcado como Resposta TiagoJesusTJS domingo, 12 de junho de 2016 12:38
    sexta-feira, 10 de junho de 2016 15:21