Estoy trabajando para agregar autorización a una aplicación ASP.NET MVC y me he topado con un bloqueo de ruta. Finalmente pude conectar nuestro proveedor de membresía personalizado y obtener la autenticación trabajando para la aplicación. Ahora, como esperaba, si agrego el atributo [Autorizar] a mis controladores, el usuario debe estar autenticado para ver la página. También he probado con éxito [Authorize (Users = "{userName}")] que también funciona para restringir la página a ese usuario específico.HttpContext.Current.User.IsInRole (roleName) siempre devuelve falso
El problema es que [Autorizar (Roles = "{RoleName}")] no parece funcionar como estoy esperando. Si agrego ese atributo a un controlador, cada vez que intento acceder a la página correspondiente, me redirigen a nuestra página de inicio de sesión. Esto es lo que esperaría que sucediera si el usuario no tiene el rol requerido, pero está sucediendo incluso si el usuario tiene ese rol. He comprobado User.IsInRole ("{roleName}") y HttpContext.Current.User.IsInRole ("{roleName}") en una vista, un controlador y un método de ayuda y esto siempre devuelve 'False'.
He verificado que los usuarios con los que estoy trabajando tienen los roles con los que estoy intentando autorizar. También probé estos usuarios en una aplicación de WebForms que restringe el acceso a la página con los mismos roles y funciona bien. Me imagino que tengo algo mal configurado en alguna parte o me falta algo simple, pero después de buscar toda la mañana, no he encontrado nada que me haya acercado más a la solución, así que espero que alguien aquí pueda ayudarme.
Oye, podría editar su respuesta para decirnos cuáles eran las configuraciones, podría ayudar a otros en el futuro. – sirrocco
sirrocco - las configuraciones de configuración eran específicas de nuestra implementación y entorno, por lo que no serían de ninguna utilidad para nadie más. – Hamman359
Su comentario me impulsó a verificar mi web.config y descubrí que el nodo roleManager tenía enabled = "false". Solo quería que la gente supiera que, si está deshabilitada, devuelve un valor falso para IsInRole en lugar de devolver una excepción de algún tipo como podría esperarse. –