sintaxis que net mvc codigo code asp c# asp.net asp.net-mvc asp.net-mvc-4

que - var asp net c#



Autenticación personalizada y ASP.NET MVC (5)

Tengo una aplicación web interna construida en ASP.NET 4 . Estamos atrapados con el uso de una API de autenticación creada por otro equipo. Si un usuario del sitio se autentica con éxito para el sitio, me gustaría darles acceso a todo el sitio.

En los días de ASP.NET WebForm solo solía mantener un objeto Usuario personalizado en sesión. Si ese objeto era nulo, sabía que el usuario no estaba autenticado. ¿Hay algún método similar pero mejorado para esto en MVC ? No quiero tener que crear mi propio proveedor del modelo de Membresía ASP.NET si es posible. ¿Cuál es la forma más simple de hacer esto?


Es probable que desee tener un filtro de autorización personalizado. Aquí hay un ejemplo: filtros personalizados en MVC . A continuación, puede aplicar este filtro globalmente al inicio de la aplicación (utilizando RegisterGlobalFilters ).

public class LegacyAuthorize : AuthorizeAttribute { public override void OnAuthorization(HttpActionContext actionContext) { if (HttpContext.Current.Session["User"] == null) base.HandleUnauthorizedRequest(actionContext); } }

Entonces en tu global.asax tendrías algo como esto:

GlobalFilters.Filters.Add(new LegacyAuthorize());


Puede hacer la Autenticación de sesión simplemente colocando un valor de variable de sesión cuando el inicio de sesión sea exitoso. P.ej

public ActionResult Index(Models.Login login) { if (ModelState.IsValid) { Dal.Login dLogin = new Dal.Login(); string result = dLogin.LoginUser(login); if (result == "Success") Session["AuthState"] = "Authenticated"; } return View(); }

Ahora el truco es que debe tener una página de diseño común de todas las vistas a las que debe verificar la autenticación. Y en esta página de diseño solo haz un cheque de afeitar como este -

<body> @if (Session["AuthState"] != "Authenticated") { Response.Redirect("~/login"); } // other html </body>

He estado usando este método en el panel de administración de mi aplicación.


Puede usar la Forms Authentication en conjunción con el atributo Authorize siguiente manera:

Para restringir el acceso a una vista:

Agregue el atributo AuthorizeAttribute a la declaración del método de acción, como se muestra a continuación,

[Authorize] public ActionResult Index() { return View(); }

Configurar la autenticación de formularios en web.config

<authentication mode="Forms"> <forms loginUrl="~/Account/Login" timeout="2880" /> </authentication>

Acción de publicación de inicio de sesión: configure la cookie de autenticación si el usuario es válido

[HttpPost] public ActionResult Login(User model, string returnUrl) { //Validation code if (userValid) { FormsAuthentication.SetAuthCookie(username, false); } }

Cerrar sesión Acción:

public ActionResult LogOff() { FormsAuthentication.SignOut(); return RedirectToAction("Index", "Home"); }


Puedes probar con algo como esto:

FormsAuthentication.SetAuthCookie(username, rememberMe);

para establecer la cookie para el usuario autenticado, entonces simplemente use el atributo [Authorize] en el Controlador o Acción que necesita autenticación.

Intenta buscar en Google sobre el tema para obtener más información, encontrarás muchas cosas sobre autenticación y autorización en MVC.


Todo lo que puede hacer en formularios que puede hacer en MVC, simplemente configure la variable de sesión en la acción de inicio de sesión del controlador.

O puede hacer esto: en la acción de inicio de sesión, agregue formsauthentication.setauthcookie("username")

Después de esto, cualquier acción con la palabra clave [Autorizar] permitirá que el usuario actual ingrese.