En fait, j'ai une application qui utilise un WebService pour récupérer des informations sur certains clients. Je validais les informations de connexion dans mon ActionResult comme:ASP.NET MVC - ActionFilterAttribute pour valider les données 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");
}
}
Où Client.Validate() est une méthode qui retourne un booléen sur la base des informations fournies sur le nom d'utilisateur et mot de passe POST
Mais je J'ai changé d'avis et je voudrais utiliser ce bon ActionFilterAttributes au début de la méthode pour qu'il soit rendu si le Client.validate() renvoie true, juste le même que [Authorize] mais avec mon webservice personnalisé, donc je le ferais avoir quelque chose comme:
[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')
}
puis à l'intérieur du ValidateAsClient j'aurais quelque chose comme:
public class ValidateAsClient : ActionFilterAttribute
{
public string username { get; set; }
public string password { get; set; }
public Boolean ValidateAsClient()
{
return Client.validate(username,password);
}
}
Donc mon problème est, je ne sais pas exactement comment le faire fonctionner, parce que je ne sais pas comment transmettre l'information figurant sur le [ValidateAsClient (nom d'utilisateur = nomUtilisateur, motdepasse = motPosté)] et aussi, comment pourrais-je faire fonctionner la fonction ValidateAsClient correctement?
J'espère que cela est facile à comprendre Merci à l'avance
Je pense que vous pouvez accéder à la collection de formulaires avec 'filterContext.HttpContext.Request.Form', au lieu de le passer. –
merci pour ce HeavyWave très bon, une autre question: Y at-il une différence entre utiliser ActionExecutingContext et ActionExecutedContext dans ce cas? Merci – zanona
ActionExecutedContext est censé être utilisé dans la méthode OnActionExecuted, qui s'exécute après la méthode d'action du contrôleur. Ainsi, dans ActionExecutedContext, vous avez accès à certains des résultats de l'exécution. Jouez juste avec IntelliSense. –