none
Opnião para melhor foram de exibição dos dados RRS feed

  • Pergunta

  • Olá a Todos..

    Minha dúvida é na View (lista de dados), qual a forma que vocês utilizam ou utilizariam.

    Cenário.

    Aplicação .net que ao logar o usuário tem uma IDENTIFICAÇÃO e para listar dados de cliente por exemplo, tem que aplicar este filtro para retornar somente os registros que lhe pertence.

    Sei que existem N formas, a que estou utilizando atualmente é:

    1 - o usuário ao logar-se, crio um objeto que contem os ID que ele pode "ver"

    minha INDEX do controller fica assim então:

    var lista_de_regional = (List<int>)Session["oRegional"]; (aqui vem 1,3,9,1001,1002); var ProcedimentoAdm = (from a in db.Procedimento.Where c => (c.num >= num) &&

    (lista_de_regional.Contains(c.CD_REGIONAL)) select a).ToList();

    No SQL este comando vira um IN (select * from Tabela where cd_regional in (1,23,399);

    Para que este código não fique no controller em todas as Index (ruim para manutenção posterior), como vocês encarariam esta situação ?

    da para usar filters ?

    ou algo mais "agradável" do que isso ?

    att,


    Isco Sistemas José Luiz Borges

    sexta-feira, 3 de outubro de 2014 16:27

Respostas

  • Opa obrigado por responder...

    Na verdade não sei seria as permissões do Identity.

    É permissão nos registros da tabela...


    O usuário tem acesso a empresa XYZ, mas somente na Filial A da mesma empresa. Então só posso mostrar os dados da filial A (que é uma coluna da tabela no banco)

    No Sql ficaria assim.

    Select * from Tabela where cod_regional in (select cod_regional from RegionalUsuario where cd_usuario = X)

    Hoje eu escrevo este comando em LINQ, mas não sei se a forma que eu escrevo é a melhor recomendada...  Como você escreveria em linq ?

    Daria para usar filters ? ao invés de deixar um código com a sentenca CONTAINS ?


    Isco Sistemas José Luiz Borges

    Meus links são bem simples uso contains sem medo. 

    Até agora não tive problemas não. 

    Quanto a liberação de 1 determinado registro da tabela para determinado user, não vou saber te responder ao certo a melhor maneira, pois, nunca trabalhei com esse tipo de abordagem.

    Pensando aqui e vendo seu ex, creio que eu faria algo da mesma forma, da até pra se pensar em uma FK onde determinada região so seria visível para aquele determinado ID, ou ate mesmo em uma terceira tabela onde ali ficariam registrado a relação Região/User podendo ser um one to many ou até mesmo many to many.

    Essa seria minha idéia.

    Ai para o link você iria selecionar o item nessa tabela de relacionamento se o retorno fosse verdadeiro você retornaria a região correspondente ou algo assim.

    Espero ajudar.

    Abraço. 

    • Marcado como Resposta Jose Luiz Borges segunda-feira, 6 de outubro de 2014 12:02
    sexta-feira, 3 de outubro de 2014 17:49

Todas as Respostas

  • José se entendi, você está querendo atribuir permissões para o usuário correto?

    Nesse caso o mais correto é utilizar o AspNet Identity, que hoje está muito tranquilo de se mexer e fazer. 

    Eu utilizo permissões na minha aplicação mas tive que fazer na unha :/.  

    Segue um link do Eduardo Pires MVP com um vídeo bem longo falando apenas de Identity conteúdo muito bom.

    Creio que irá te ajudar com seu problema. 

    http://eduardopires.net.br/2014/08/asp-net-identity-tutorial-completo/

    Abraço.

    sexta-feira, 3 de outubro de 2014 17:09
  • Opa obrigado por responder...

    Na verdade não sei seria as permissões do Identity.

    É permissão nos registros da tabela...


    O usuário tem acesso a empresa XYZ, mas somente na Filial A da mesma empresa. Então só posso mostrar os dados da filial A (que é uma coluna da tabela no banco)

    No Sql ficaria assim.

    Select * from Tabela where cod_regional in (select cod_regional from RegionalUsuario where cd_usuario = X)

    Hoje eu escrevo este comando em LINQ, mas não sei se a forma que eu escrevo é a melhor recomendada...  Como você escreveria em linq ?

    Daria para usar filters ? ao invés de deixar um código com a sentenca CONTAINS ?


    Isco Sistemas José Luiz Borges

    sexta-feira, 3 de outubro de 2014 17:21
  • Opa obrigado por responder...

    Na verdade não sei seria as permissões do Identity.

    É permissão nos registros da tabela...


    O usuário tem acesso a empresa XYZ, mas somente na Filial A da mesma empresa. Então só posso mostrar os dados da filial A (que é uma coluna da tabela no banco)

    No Sql ficaria assim.

    Select * from Tabela where cod_regional in (select cod_regional from RegionalUsuario where cd_usuario = X)

    Hoje eu escrevo este comando em LINQ, mas não sei se a forma que eu escrevo é a melhor recomendada...  Como você escreveria em linq ?

    Daria para usar filters ? ao invés de deixar um código com a sentenca CONTAINS ?


    Isco Sistemas José Luiz Borges


    Obrigado pelo link do Identity, estava procurando algo assim.

    Isco Sistemas José Luiz Borges

    sexta-feira, 3 de outubro de 2014 17:22
  • Opa obrigado por responder...

    Na verdade não sei seria as permissões do Identity.

    É permissão nos registros da tabela...


    O usuário tem acesso a empresa XYZ, mas somente na Filial A da mesma empresa. Então só posso mostrar os dados da filial A (que é uma coluna da tabela no banco)

    No Sql ficaria assim.

    Select * from Tabela where cod_regional in (select cod_regional from RegionalUsuario where cd_usuario = X)

    Hoje eu escrevo este comando em LINQ, mas não sei se a forma que eu escrevo é a melhor recomendada...  Como você escreveria em linq ?

    Daria para usar filters ? ao invés de deixar um código com a sentenca CONTAINS ?


    Isco Sistemas José Luiz Borges

    Meus links são bem simples uso contains sem medo. 

    Até agora não tive problemas não. 

    Quanto a liberação de 1 determinado registro da tabela para determinado user, não vou saber te responder ao certo a melhor maneira, pois, nunca trabalhei com esse tipo de abordagem.

    Pensando aqui e vendo seu ex, creio que eu faria algo da mesma forma, da até pra se pensar em uma FK onde determinada região so seria visível para aquele determinado ID, ou ate mesmo em uma terceira tabela onde ali ficariam registrado a relação Região/User podendo ser um one to many ou até mesmo many to many.

    Essa seria minha idéia.

    Ai para o link você iria selecionar o item nessa tabela de relacionamento se o retorno fosse verdadeiro você retornaria a região correspondente ou algo assim.

    Espero ajudar.

    Abraço. 

    • Marcado como Resposta Jose Luiz Borges segunda-feira, 6 de outubro de 2014 12:02
    sexta-feira, 3 de outubro de 2014 17:49
  • Opa... desculpa a demora.. ajudou sim...

    Mas o sistema é extremamente grande, e no SQL o uso de IN cai um pouco a performance....

    mas ok.. valew pela resposta


    Isco Sistemas José Luiz Borges

    segunda-feira, 6 de outubro de 2014 12:02