none
Asociar usuarios con empresas asp.net MVC3 RRS feed

  • Pregunta

  • Hola:

    Actualmente estoy desarrollando un proyecto con asp.net mvc3, he instalado por medio de nuget los "asp.net universal providers" esto con el fin de manejar el logeo de los usuarios y los roles dentro de la aplicación, adicionalmente estoy utilizando entity framework para hacer las consultas a la base de datos, lo que he hecho es añadir a la carpeta models un entity data model para crear el modelo de la base de datos luego sobre la superficie del modelo le utilizado la opcion de ""agregar elemento de generacion de codigo" y luego le he dado en la opcion "ADO.net Dbcontext generator", esto me ha creago unas clases que corresponden a cada tabla de la base de datos.

    Luego he creado unos controller utilizando la opcion de "controller con read/write actions and views, using entity framework" esto me ha creado todo lo necesario (vistas y acciones) para crear, consultar, modificar y eliminar datos de la base de datos. he hecho esto para cada tabla de la base de datos.

    Dentro de los requisitos de la aplicación esta el de asociar cada usuario a una empresa (tengo una tabla empresas dentro de mi base de datos), por tanto cuando el usuario se logeee debe ver datos correspondientes solo a su empresa, es decir tengo que filtrar la información por empresa dentro de la aplicación.

    Como debo hacer esto dentro asp.net mvc3, ¿tengo que modificar las consultas linq que hay en los controladores? o ¿se puede declarar una variable global con la empresa del usuario logeado?

    Agradezco su colaboración

    Cordial saludo

    martes, 17 de enero de 2012 15:04

Respuestas

  • Buenas!

    Deberás hacer ambas cosas que preguntas:

    1. Por un lado declarar una variable "global" (entre comillas, lo vemos luego) con la empresa del usuario. Esta variable puedes obtenerla cada vez que alguien haga login en el sistema.
    2. Por otro, los métodos que consultan el modelo deben filtrar por el valor de dicha variable. Es decir, deberás añadir el where correspondiente.

    Dicho esto... puntualizaciones.

    1. Las variables "globales" no existen en web. Ni en ASP.NET MVC ni en ningún otro framework. Por la propia naturaleza stateless de la web. Si quieres guardar una variable "global" para el usuario debes hacerlo en la Sesion. Desde los controladores tienes acceso a la sesión sin ningún problema. Por supuesto, no estaría de más que mirases algunos puntos en los que afecta el usar la sesión. Por si te sirve de ayuda hace tiempo publiqué en mi blog un artículo al respecto: http://geeks.ms/blogs/etomas/archive/2010/06/30/asp-net-mvc-q-amp-a-c-243-mo-usar-la-sesi-243-n.aspx
    2. Si NO quieres usar la sesión, puedes modificar las consultas, para añadir el join. Es decir, dado que tienes el usuario logado (User.Identity) con esto puedes saber la empresa y entonces filtrar. No tienes necesidad de guardarla en sesión si no quieres.

    Y poco más puedo decirte sin tener más información de como es tu código...

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    • Marcado como respuesta Eder Costa viernes, 26 de octubre de 2012 13:25
    martes, 17 de enero de 2012 15:23

Todas las respuestas

  • Buenas!

    Deberás hacer ambas cosas que preguntas:

    1. Por un lado declarar una variable "global" (entre comillas, lo vemos luego) con la empresa del usuario. Esta variable puedes obtenerla cada vez que alguien haga login en el sistema.
    2. Por otro, los métodos que consultan el modelo deben filtrar por el valor de dicha variable. Es decir, deberás añadir el where correspondiente.

    Dicho esto... puntualizaciones.

    1. Las variables "globales" no existen en web. Ni en ASP.NET MVC ni en ningún otro framework. Por la propia naturaleza stateless de la web. Si quieres guardar una variable "global" para el usuario debes hacerlo en la Sesion. Desde los controladores tienes acceso a la sesión sin ningún problema. Por supuesto, no estaría de más que mirases algunos puntos en los que afecta el usar la sesión. Por si te sirve de ayuda hace tiempo publiqué en mi blog un artículo al respecto: http://geeks.ms/blogs/etomas/archive/2010/06/30/asp-net-mvc-q-amp-a-c-243-mo-usar-la-sesi-243-n.aspx
    2. Si NO quieres usar la sesión, puedes modificar las consultas, para añadir el join. Es decir, dado que tienes el usuario logado (User.Identity) con esto puedes saber la empresa y entonces filtrar. No tienes necesidad de guardarla en sesión si no quieres.

    Y poco más puedo decirte sin tener más información de como es tu código...

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    • Marcado como respuesta Eder Costa viernes, 26 de octubre de 2012 13:25
    martes, 17 de enero de 2012 15:23
  • Hola eduard tomàs

    Muchas gracias por tu ayuda. Soy nuevo en esto del mvc con asp.net pero bueno cada vez aprendo mas cosas.

    Gracias.

    Cordial saludo

    martes, 17 de enero de 2012 15:40
  • ;-)

    Aquí estamos, para ayudar!

    Si tienes dudas concretas sobre como hacer algo, ponlas sin miedo y veremos si podemos ayudarte. Pero ten presente que si son muy genéricas o vagas también lo serán las respuestas... ;-)

    Saludos!


    Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
    martes, 17 de enero de 2012 15:42