실제로 일부 클라이언트 정보를 검색하는 데 WebService를 사용하는 응용 프로그램이 있습니다. 그래서 내가 좋아하는 내 ActionResult 내부의 로그인 정보를 검증 하였다POST 데이터를 확인하는 ASP.NET MVC - 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()가 [Authorize]와 똑같지 만 내 사용자 지정 웹 서비스를 반환하면 렌더링됩니다. 다음과 같이 입력하십시오 :
[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를 가지고 놀아보십시오. –