実際、WebServiceを使用してクライアント情報を取得するアプリケーションがあります。そのため、ActionResult内のログイン情報を次のように検証していました。
[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);
}
}
だから私の問題は、POSTED情報を[ValidateAsClient(username = postedUsername、password = postedPassword)]に渡す方法がわからないため、それを機能させる方法が正確にわからないことです。関数ValidateAsClientは正しく機能しますか?
わかりやすいと思いますよろしくお願いします