実際には、WebServiceを使用して一部のクライアント情報を取得するアプリケーションがあります。 は、だから私は次のように私のActionResult内のログイン情報を検証しました:ASP.NET MVC - POSTデータを検証するActionFilterAttribute
[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");
}
}
Client.Validate()はPOSTのユーザー名とパスワード
しかし、私に提供された情報に基づいてブール値を返すメソッドです
私の心が変わったので、メソッドの冒頭でその素敵なActionFilterAttributesを使いたいので、Client.validate()がtrueを返すだけで、[Authorize]と同じですがカスタムWebサービスであればレンダリングされます
[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')
}
その後、ValidateAsClientの内側に私のようなものだろう。だから、私の問題がある
public class ValidateAsClient : ActionFilterAttribute
{
public string username { get; set; }
public string password { get; set; }
public Boolean ValidateAsClient()
{
return Client.validate(username,password);
}
}
を私はに投稿された情報を渡す方法がわからないので、私は、それを動作させるために、正確に方法がわかりません[ValidateAsClient(username = postedUsername、passwords = postedPassword)]また、ValidateAsClient関数を正しく動作させるにはどうすればよいですか?
私は、これはあなたが次のメソッドをオーバーライドする必要があり、事前
私は 'filterContext.HttpContext.Request.Form'を使ってフォームコレクションにアクセスする代わりに、それを渡すことができると思います。 –
HeavyWaveに感謝します。この場合、ActionExecutingContextとActionExecutedContextの使用に違いはありますか? ありがとう – zanona
ActionExecutedContextは、コントローラのアクションメソッドの後に実行されるOnActionExecutedメソッドで使用されています。そのため、ActionExecutedContextでは、実行結果の一部にアクセスできます。 IntelliSenseでそれを試してみてください。 –