none
Gerenciamento de Perfil - Asp.NET C# RRS feed

  • Pergunta

  • Boa tarde !

    Na empresa onde trabalho, a equipe está desenvolvendo um sistema para gerenciamento de perfil de usuário de páginas web, por exemplo, para uma determinada página e um determinado usuário, não é para habilitar o botão X ou Y, o link A ou B, em um determinado menu não habilitar o submenu C ou D.

    A idéia é que em um local ele gerencie isso.

    Sou novo em desenvolvimento web, antes eu trabalhava com aplicações Windows Form e como ele armazenava os dados na memória local, era mais simples armazenar os dados dos perfis de um determinado usuário.

    Estive dando uma lida em ASP.NET Profile, mas não sei se ele vai atender plenamente o que desejamos.

    Até o momento fizemos um sistema que armazena por exemplo em uma tabela no banco de dados, qual o componente que o usuário A ou B possui acesso, por exemplo(não está desta forma, mas é um exemplo):

    Imagina que a tabela tem os seguintes campos: ID, Sistema, Modulo, nomeComponente, usuário

    1 - 1 - 1 - BtnTeste1 - 1

    2 - 1 - 2 - BtnTeste2 - 1

    Ou seja, o usuário 1 tem acesso a estes dois botões na tela X do sistema geral.

    Quando o usuário está acessando a tela agente passa o sistema e o módulo e ele recupera uma lista contendo os Controles que o usuário vai ter acesso, neste ponto agente faz um FindControl passando o ID(nomeComponente) tanto na Page como na MasterPage. No entanto conversamos como um integrante da equipe com mais experiência em desenvolvimento para Web e o mesmo comentou que desta forma ficaria mais simples a alteração, mas em questão de performance da página ficaria ruim e não seria interessante para nós.

    Estamos dando uma lida em ASP.NET Profile, verificamos que conseguimos armazenar algumas informações do usuário nesta sessão, mas não sabemos o limite, e mesmo que façamos desta forma ao efetuar o FindControl ele pode demorar um pouco para renderizar a página.

    Por favor alguém sabe me informar como posso criar um sistema de gerenciamento de perfil de aplicações web da empresa ?

    Lembrando que o volume de acesso destas aplicações pode ser grande.

    Nos foi sugerido também, realizar a validação nas paginas pelo id fixo, no entanto a cada alteração por exemplo na página, precisaríamos replicar para todos os servidores.

    Ou então, poderíamos armazenar o Perfil do usuário na sessão, e armazenar nos componentes da tela o que cada um poderia ter acesso, mas mesmo assim teríamos que alterar os controles da tela, o que cai na mesma situação anterior.

    Por favor alguém pode me auxiliar em como utilizar perfil em paginas Web ?

    Obrigado.

    Marco.

    segunda-feira, 9 de setembro de 2013 19:55

Respostas

  • Marco para um gerenciamento de perfil complexo como esse a melhor saída é guardar em banco, vc poderia ter uma tabela onde qdo o usuário se logasse vc pegaria todas as permissões dele e guardasse nessa tabela, pode ser até somente um campo id, um campo para guardar a identificacao do usuario e um campo string com tamanho bem grande onde vc colocaria as permissões, ai no load de cada página vc faria um select nessa tabela na posição do campo string para ver se o usuário teria permissão ou não, qdo o usuário saisse do sistema vc deletaria o registro dele na tabela.

    Tenho algo assim, não uso session, então cada usuário que se loga crio um registro na tabela com suas informações e guardo essas informações em uma string e qdo preciso vou lá e pego a informação que preciso, qdo o usuário sai eu excluo o registro e caso ele feche a página nessa tabela tenho um campo date qdo o usuário se loga procuro pelo registro dele nessa tabela se já existir eu deleto o registro, assim essa tabela sempre fica pequena geralmente com os registros do usuário que estão logados.

    Session é perigoso pq quem gerencia é o iis ai vc teria que ter um servidor iis com muita memória e eu já usei e tive alguns problemas.


    Junior

    • Marcado como Resposta Marco_Alexandre terça-feira, 10 de setembro de 2013 12:41
    terça-feira, 10 de setembro de 2013 11:34
  • Com as permissões do ASP.NET o máximo que podemos chegar são permissões a nivel de pastas e páginas, se quiser controlar permissões a nível de funcionalidade vai ter que controlar MANUALMENTE....

    Usando ASP.NET PROFILE as informações ficam associadas ao perfil dos usuários logados e elas por padrão ficam no SQL Server dentro da base ASPNETDB na tabela ASPNET_PROFILE.

    Criar uma tabela de ações e lá dentro você vincula o ID do usuário logado com o ID da página com o ID da ação que ele tem na página e pode até mesmo jogar esses dados dentro do perfil


    Leonardo Lourenço Silva


    terça-feira, 10 de setembro de 2013 12:18
  • http://www.slideshare.net/Leolosi/aspnet-profile

    Se quiser as demonstrações também me Adiciona no face que te passo as demonstrações que fiz nesse slide.


    Leonardo Lourenço Silva


    • Marcado como Resposta Marco_Alexandre terça-feira, 10 de setembro de 2013 17:20
    terça-feira, 10 de setembro de 2013 12:52

Todas as Respostas

  • Marco para um gerenciamento de perfil complexo como esse a melhor saída é guardar em banco, vc poderia ter uma tabela onde qdo o usuário se logasse vc pegaria todas as permissões dele e guardasse nessa tabela, pode ser até somente um campo id, um campo para guardar a identificacao do usuario e um campo string com tamanho bem grande onde vc colocaria as permissões, ai no load de cada página vc faria um select nessa tabela na posição do campo string para ver se o usuário teria permissão ou não, qdo o usuário saisse do sistema vc deletaria o registro dele na tabela.

    Tenho algo assim, não uso session, então cada usuário que se loga crio um registro na tabela com suas informações e guardo essas informações em uma string e qdo preciso vou lá e pego a informação que preciso, qdo o usuário sai eu excluo o registro e caso ele feche a página nessa tabela tenho um campo date qdo o usuário se loga procuro pelo registro dele nessa tabela se já existir eu deleto o registro, assim essa tabela sempre fica pequena geralmente com os registros do usuário que estão logados.

    Session é perigoso pq quem gerencia é o iis ai vc teria que ter um servidor iis com muita memória e eu já usei e tive alguns problemas.


    Junior

    • Marcado como Resposta Marco_Alexandre terça-feira, 10 de setembro de 2013 12:41
    terça-feira, 10 de setembro de 2013 11:34
  • Com as permissões do ASP.NET o máximo que podemos chegar são permissões a nivel de pastas e páginas, se quiser controlar permissões a nível de funcionalidade vai ter que controlar MANUALMENTE....

    Usando ASP.NET PROFILE as informações ficam associadas ao perfil dos usuários logados e elas por padrão ficam no SQL Server dentro da base ASPNETDB na tabela ASPNET_PROFILE.

    Criar uma tabela de ações e lá dentro você vincula o ID do usuário logado com o ID da página com o ID da ação que ele tem na página e pode até mesmo jogar esses dados dentro do perfil


    Leonardo Lourenço Silva


    terça-feira, 10 de setembro de 2013 12:18
  • Entendi Junior, é uma boa opção para o que preciso aqui, vou analisar com a equipe aqui para ver o que podemos adequar aos nossos sistemas.

    Obrigado pela dica e pela ajuda.

    Até mais

    Marco.

    terça-feira, 10 de setembro de 2013 12:41
  • Legal Leonardo, uma outra boa opção, talvez seja necessário somente algumas customizações.

    Mas uma boa opção também, pois o .NET ja provê uma série de recursos que auxiliam na implementação da solução, começamos a ler sobre os profile providers a pouco tempo.

    Vou analisar com a equipe agora para ver qual a melhor opção para nos atender aqui.

    Até mais e obrigado

    Marco.

    terça-feira, 10 de setembro de 2013 12:46
  • http://www.slideshare.net/Leolosi/aspnet-profile

    Se quiser as demonstrações também me Adiciona no face que te passo as demonstrações que fiz nesse slide.


    Leonardo Lourenço Silva


    • Marcado como Resposta Marco_Alexandre terça-feira, 10 de setembro de 2013 17:20
    terça-feira, 10 de setembro de 2013 12:52
  • Massa cara, estou testando neste momento o profile aqui, para ver se adequa ao esperado e ao volume de acessos.

    Obrigado mais uma vez.

    Marco.

    terça-feira, 10 de setembro de 2013 17:22