Actualmente tengo una aplicación que está utilizando un servicio web para recuperar información de algunos clientes. Así que fue la validación de la información de acceso dentro de mi ActionResult como:ASP.NET MVC - ActionFilterAttribute para validar datos POST
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult ClientLogin(FormCollection collection)
{
if(Client.validate(collection["username"], collection["password"]))
{
Session["username"] = collection["username"];
Session["password"] = collection["password"];
return View("valid");
}
else
{
Session["username"] = "";
Session["password"] = "";
return View("invalid");
}
}
Dónde Client.Validate() es un método que devuelve un valor lógico basado en la información proporcionada en el nombre de usuario y contraseña de POST
Pero Cambié de opinión y me gustaría utilizar ese bonito ActionFilterAttributes al comienzo del método, de modo que solo se representará si Client.validate() devuelve true, igual que [Authorize] pero con mi servicio web personalizado, así que lo haría tiene algo como:
[AcceptVerbs(HttpVerbs.Post)]
[ValidateAsClient(username=postedUsername,password=postedPassword)]
//Pass Posted username and password to ValidateAsClient Class
//If returns true render the view
public ActionResult ClientLogin()
{
return View('valid')
}
y luego dentro de la ValidateAsClient Me gustaría tener algo como:
public class ValidateAsClient : ActionFilterAttribute
{
public string username { get; set; }
public string password { get; set; }
public Boolean ValidateAsClient()
{
return Client.validate(username,password);
}
}
Así que mi problema es que no sé exactamente cómo hacer que funcione, porque no sé cómo pasar la información publicada en el [ValidateAsClient (username = postedUsername, password = postingPassword)] y también, ¿cómo podría hacer que la función ValidateAsClient funcione correctamente?
espero que esto es fácil de entender Gracias de antemano
Creo que podría acceder a la colección de formularios con 'filterContext.HttpContext.Request.Form', en lugar de pasarlo. –
gracias por ese HeavyWave muy bueno, otra pregunta: ¿Hay alguna diferencia entre el uso de ActionExecutingContext y ActionExecutedContext en este caso? Gracias – zanona
Se supone que ActionExecutedContext se usa en el método OnActionExecuted, que se ejecuta después del método de acción del controlador. Entonces, en ActionExecutedContext tiene acceso a algunos de los resultados de la ejecución. Solo juegue con IntelliSense. –