2008-11-11 6 views
6

Estoy usando la membresía de ASP.NET y noté que no hay un método en el Roles class a modificar un rol (su nombre por ejemplo), solo para crearlos y eliminarlos.¿Cómo se cambia el nombre de una función utilizando Membresía en .NET?

¿Es posible o no es compatible?

EDITAR: @CheGueVerra: Sí, buena solución.

¿Sabe usted (para crédito adicional :)) por qué no es posible?

+0

¿Por qué no es posible: No en la clase base [RoleProvider clase abstracta pública: ProviderBase] Por qué optan por no ponerlo en práctica, que no sé aún;) Dejaré que haga la pregunta – CheGueVerra

Respuesta

19

No hay una forma directa de cambiar el nombre de una función en el proveedor de Membresía.

Me gustaría obtener la lista de usuarios que tienen el rol que desea cambiar de nombre, luego eliminarlos de la lista, eliminar el rol, crear el rol con el nuevo nombre y luego Agregar los usuarios encontrados anteriormente para el rol con el nuevo nombre.

public void RenameRoleAndUsers(string OldRoleName, string NewRoleName) 
{ 
    string[] users = Roles.GetUsersInRole(OldRoleName); 
    Roles.CreateRole(NewRoleName); 
    Roles.AddUsersToRole(users, NewRoleName); 
    Roles.RemoveUsersFromRole(users, OldRoleName); 
    Roles.DeleteRole(OldRoleName); 
} 

que va a cambiar el nombre de la función para todos los usuarios de la función.

Seguimiento: Roles, se utilizan para garantizar que un usuario juegue solo su parte en el sistema, por lo tanto User.IsInRole (ROLE_NAME), lo ayudará a aplicar los valores BR que se aplican, para un usuario y las funciones que desempeña in. Si puede cambiar los nombres de las funciones sobre la marcha, ¿cómo va a validar que el usuario realmente está en esa función? Bueno, eso es lo que entendí, cuando pregunté al respecto.

rtpHarry edición: muestra pseudocódigo Convertido a compilables C# método

5

Cambiar el nombre de una función en el modelo de membresía ASP.NET programáticamente sería una cosa mala ™, porque los nombres de función se usan en el archivo de configuración para definir permisos. Si hubiera una forma programática para cambiar el nombre de la función (que persistió en el cambio a la base de datos), rompería inmediatamente cualquier configuración de seguridad basada en roles en web.config para cualquier aplicación web que utilice la base de datos, y no habría forma de hacerlo. para garantizar que una sola aplicación web podría alterar la configuración de cada aplicación web utilizando esa base de datos de membresía.

+1

cierto, pero no planeo usar el archivo de configuración, ya que mis usuarios pueden crear nuevos roles, y pueden configurar a través de la aplicación a qué páginas tienen acceso los nuevos roles a. Necesito agregar una verificación en tiempo de ejecución, por lo que esta restricción no es necesaria – juan

+2

¿Y no sucedería lo mismo si elimina una función? – juan

Cuestiones relacionadas