实际上,我有一个应用程序,它使用Web服务来检索一些客户信息。 因此,我在我的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正常工作?
希望这很容易理解 提前感谢。
filterContext.HttpContext.Request.Form
访问表单集合,而不是传递它。 - Çağdaş Tekin