password net lockout custom authorizeattribute asp adddefaultidentity asp.net asp.net-mvc authentication windows-authentication asp.net-core

lockout - ASP.NET 5 Roles personalizados para la autenticación de Windows



authorizeattribute asp net core (1)

Estoy construyendo un sitio de tipo intranet con ASP.NET 5 que usa Autenticación de Windows. Tengo la autenticación funcionando, pero no quiero que todos en el dominio tengan acceso al sitio de intranet. No puedo usar roles de dominio, así que configuré mis propios roles personalizados en mi SQL Server. Tengo una tabla que mapea el nombre de usuario del dominio a roles. Quiero restringir el acceso al sitio de intranet solo a los usuarios que tienen una función definida en mi tabla de roles de SQL Server. ¿Cómo establecería roles personalizados para la Autenticación de Windows en ASP.NET 5? ¡Gracias!


No configura roles personalizados. Debe crear un atributo de autorización personalizado, como se describe aquí .

ACTUALIZAR:

Sí, puede usar su atributo de autorizar personalizado a nivel mundial. Digamos que aquí está su atributo de autorizar personalizado:

public class MyAuthorizeAttribute : AuthorizeAttribute { protected override bool AuthorizeCore(HttpContextBase httpContext) { var username = httpContext.User.Identity.Name; // Check to see if user has a role in the database var isAuthorized = db.User.Find(username).Any(); return isAuthorized; } }

Entonces, puede usarlo en el nivel de Acción o Controlador de esta manera:

[MyAuthorize] public ActionResult Index() { }

O bien, puede registrarlo como un filtro global en su clase FilterConfig en la carpeta App_Start, de esta manera:

public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute()); filters.Add(new MyAuthorizeAttribute()); } }