ASP.NET MVC - ActionFilterAttribute zur Validierung der POST-Daten
Eigentlich habe ich eine Anwendung, die eine WebService zum abrufen von einigen Kunden Informationen.
Also ich war die überprüfung der login-Daten in meinem ActionResult wie:
[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");
}
}
Dem Client.Validate() ist eine Methode, die einen booleschen Wert zurückgibt, basierend auf der information, die auf der POST Benutzername und Passwort
Aber ich habe meine Meinung geändert und ich möchte, dass schöne ActionFilterAttributes am Anfang der Methode, so wird es nur dargestellt werden, wenn der Client.validate() true zurückgibt, wird nur das gleiche wie [Autorisieren], aber mit meinem custom webservice, so hätte ich etwas wie:
[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')
}
und anschließend in die ValidateAsClient ich hätte so etwas wie:
public class ValidateAsClient : ActionFilterAttribute
{
public string username { get; set; }
public string password { get; set; }
public Boolean ValidateAsClient()
{
return Client.validate(username,password);
}
}
Also mein problem ist, ich weiß nicht genau, wie es funktioniert, denn ich weiß nicht, wie das passieren der veröffentlichten Informationen zu den [ValidateAsClient(username=postedUsername,password=postedPassword)] und außerdem, wie könnte ich die Funktion ValidateAsClient richtig funktioniert?
Ich hoffe das ist leicht zu verstehen
Vielen Dank im Voraus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sowas wohl:
Und verwenden Sie es wie diese:
filterContext.HttpContext.Request.Form
, anstatt übergeben es vorbei.Sollten Sie überschreiben die folgende Methode.
Und aus dem Kontext-Objekt, Zugriff auf Ihre Daten veröffentlichen.
Ich glaube nicht, dass es eine gute Idee, verwenden Sie ein
ActionFilterAttribute
in diesem Fall. Und was Sie tun möchten, ist definitiv nicht das gleiche wieAuthorize
Attribut besitzt.Den
Authorize
Attribut nur spritzt eine gemeinsame Logik in einen controller/action. Das ist :Ihre
ClientLogin
Aktion gilt nur, was es tun soll im moment.Es wäre ein schlechtes design zu tragen, dass die Logik über einen
ActionFilterAttribute
.Ich würde lösen dieses problem mit einer benutzerdefinierten binder in ASP.NET MVC.
Nehme an, deine Aktion wird folgende Signatur haben.
MyParam Klasse:
Dann die benutzerdefinierte binder