实际上我有一个使用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");
}
}
Run Code Online (Sandbox Code Playgroud)
其中Client.Validate()是一个基于POST用户名和密码提供的信息返回布尔值的方法
但是我改变了主意,我想在方法的开头使用那个好的ActionFilterAttributes,这样只要Client.validate()返回true,就像[Authorize]一样,但是使用我的自定义webservice,它就会被渲染,所以我会有类似的东西:
[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')
}
Run Code Online (Sandbox Code Playgroud)
然后在ValidateAsClient中我会有类似的东西:
public class ValidateAsClient : ActionFilterAttribute
{
public string username { get; set; }
public string password { get; set; }
public Boolean ValidateAsClient() …Run Code Online (Sandbox Code Playgroud)