Jump to content

Duda usuario en tabla SQL y permisos


Recommended Posts

Chicos, nuevamente recurro a ustedes, en base a el proyecto que estoy llevando a cabo para la carrera, donde debo crear usuarios en una tabla (admin y users), quien uno puedo ingresar datos y consultar y el otro, solo puede consultar.

Conversando con una chica programadora que trabaja en la empresa donde trabajo, me comentó que esto se puede hacer por permisos de escritura a un campo en si (llave primaria de 'x' usuario, según si es admin o no) y en base a eso, crear una variable global y llamarla desde el código para ocultar opciones y habilitar, según sea el tipo de perfil.
Me pueden ayudar con esto o bien, indicar como se llama este procedimiento para investigar un poco? Muchas gracias :D

Estoy trabajando con asp.net C# y SQL Server 200R2

Link to comment
Share on other sites

Dependiendo que tan complejo es el nivel de permisos que quieres administrar, deberias crear una tabla usuarios y en esta tabla crear un campo de perfil y ese usar para indicar si es administrador u otro perfil.

 

Eso debería ser masque suficiente. Si necesitas mas detalles, entonces deberás crear una tabla perfil en donde detallar los permisos de cada uno de los perfiles que quieras crear.

Link to comment
Share on other sites

Dependiendo que tan complejo es el nivel de permisos que quieres administrar, deberias crear una tabla usuarios y en esta tabla crear un campo de perfil y ese usar para indicar si es administrador u otro perfil.

 

Eso debería ser masque suficiente. Si necesitas mas detalles, entonces deberás crear una tabla perfil en donde detallar los permisos de cada uno de los perfiles que quieras crear.

 

mmmm, ya veo. Pero lo que necesito, es lo siguiente:

 

Tengo mi método que validad nombre de usuario y pass, que si es true, envía al index.aspx:

protected void btnLogin_Click(object sender, EventArgs e)
        {

            loginMensaje.Text = "";
            BCLogAcc.Principal validaDatos = new BCLogAcc.Principal();

            try
            {
                if (validaDatos.login(txtUser.Text,txtPass.Text) == true)
                {
                    Session["nombreUsuario"] = txtUser.Text;
                    Response.Redirect("index.aspx");
                    
                }
                else
                {
                    loginMensaje.Text = "Nombre usuario y/o contraseña no corresponden.";
                }
            }
            catch (Exception)
            {
                loginMensaje.Text = "Error en conexion a BBDD.";
            }
            
        }

Luego tengo mi tabla simple, con datos y tipo de usuario.

CREATE TABLE usuarios(
	nameUser NVARCHAR(20) NOT NULL,
	passUser NVARCHAR(20) NOT NULL,
	nomUser NVARCHAR(100) NOT NULL,
	profileUser NVARCHAR(7) NOT NULL
	CONSTRAINT PK_USUARIOS PRIMARY KEY(nameUser)
);

INSERT INTO usuarios VALUES('admin','admin','Administrador','admin');
INSERT INTO usuarios VALUES('user','user','Usuario','user');

Necesito que, según el tipo de perfil, se oculten los links ingreso y consulta, que están en Site.Master. Estoy trabajando con MasterPage.

Link to comment
Share on other sites

Si estas usando master pages, crea una variable de sesión en donde guardes el perfil, y luego usas un If o un Switch para ir activando o desactivando elementos de la página según necesites.

 

Te pasaste! genere las variables de sesión y active - desactive los que era necesario. Aún así, me gustaría aprender a asignar por permisos otorgados en la base de datos. Sabes como se llama eso o si me pueden recomendar algo así?

 

Gracias!

Edited by Banreaper
Link to comment
Share on other sites

Eso es netamente modelado y diseño de la aplicación cliente, en donde tu creas las tablas y estableces la forma y los privilegios de los perfiles de usuarios que utilizarán tu aplicación. Esta es la forma mas común y la que, practicamente siempre, utilizarás. La cuenta de BD por lo general es única para la aplicacion y tiene todos los permisos necesarios para que el programa funcione correctamente, y sólo pueda ver lo que le corresponde.

 

Lo otro es que hagas como un "enlace" entre un usuario de la base de datos y tu aplicación. Pero esto tecnicamente no se utiliza por ser un potencial riesgo, y complicado (por no decir imposible) de implementar, ya que los "privilegios" de un usuario BD no necesariamente son los mismos de una aplicación cliente, además de que es completamente dependiente de que motor de base de datos vayas a utilizar.

 

 

Edited by The Duke of Quakem
Link to comment
Share on other sites

 

Si estas usando master pages, crea una variable de sesión en donde guardes el perfil, y luego usas un If o un Switch para ir activando o desactivando elementos de la página según necesites.

 

Te pasaste! genere las variables de sesión y active - desactive los que era necesario. Aún así, me gustaría aprender a asignar por permisos otorgados en la base de datos. Sabes como se llama eso o si me pueden recomendar algo así?

 

Gracias!

 

Podrías buscar información sobre el modelo RBAC o ABAC :tonto:

 

PS: http://csrc.nist.gov/groups/SNS/rbac/documents/coyne-weil-13.pdf

 

Existen implementaciones de esos modelos tanto en .Net como en otras plataformas :otnot:

 

Saludos :krider:

Edited by AshWilliams
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...