Aktualnie mam aplikację korzystającą z usługi WebService do pobierania informacji o niektórych klientach. Więc ja walidacji danych logowania w mojej ActionResult jak:ASP.NET MVC - ActionFilterAttribute do sprawdzania danych 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");
}
}
Gdzie Client.Validate() to metoda, która zwraca wartość logiczną na podstawie informacji dostarczonych na nazwę użytkownika i hasło POST
Ale zmienił zdanie i chciałbym użyć tego ładnego ActionFilterAttributes na początku metody, więc będzie on renderowany tylko wtedy, gdy Client.validate() zwróci true, tak samo jak [Authorize], ale z moim niestandardowym webservice, więc chciałbym mieć coś takiego:
[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')
}
a następnie wewnątrz ValidateAsClient chciałbym mieć coś takiego:
public class ValidateAsClient : ActionFilterAttribute
{
public string username { get; set; }
public string password { get; set; }
public Boolean ValidateAsClient()
{
return Client.validate(username,password);
}
}
Więc mój problem jest, nie wiem dokładnie, jak to działało, bo nie wiem jak przekazać dydaktyczna do [ValidateAsClient (username = postedUsername, password = postedPassword)] a także, w jaki sposób mogę sprawić, aby funkcja ValidateAsClient działała poprawnie?
Mam nadzieję, że to jest łatwe do zrozumienia góry dzięki
Myślę, że można uzyskać dostęp do kolekcji formularza z 'filterContext.HttpContext.Request.Form', zamiast przekazywania go. –
dzięki za to HeavyWave bardzo dobre, kolejne pytanie: czy jest jakaś różnica między użyciem ActionExecutingContext i ActionExecutedContext w tym przypadku? Dzięki – zanona
ActionExecutedContext ma być używany w metodzie OnActionExecuted, która jest wykonywana po metodzie akcji kontrolera. Tak więc w ActionExecutedContext masz dostęp do niektórych wyników wykonania. Po prostu baw się tym z IntelliSense. –