我正在学习ASP.NET MVC中的Controller类,发现它实现了IAuthenticationFilter接口。但是我不知道如何在我的控制器中实现它的OnAuthentication()和OnAuthenticationChallenge()方法以及何时调用这些方法。
如果有人能够向我解释或分享任何解释此内容的链接,那将非常有帮助。即使在MSDN上,我也未能找到任何资源。
我正在学习ASP.NET MVC中的Controller类,发现它实现了IAuthenticationFilter接口。但是我不知道如何在我的控制器中实现它的OnAuthentication()和OnAuthenticationChallenge()方法以及何时调用这些方法。
如果有人能够向我解释或分享任何解释此内容的链接,那将非常有帮助。即使在MSDN上,我也未能找到任何资源。
使用OnAuthentication
来设置或修改当前请求的主体信息。
使用OnAuthenticationChallenge
来验证当前主体信息并允许执行当前请求。例如:
public class CustomAuthenticatioFilter : ActionFilterAttribute, IAuthenticationFilter
{
public void OnAuthentication(AuthenticationContext filterContext)
{
//Here you are setting current principal
filterContext.Principal = new ClaimsPrincipal();
}
public void OnAuthenticationChallenge(AuthenticationChallengeContext filterContext)
{
//Here you're checking current action and redirecting to ErrorPage
filterContext.Result = new RedirectToRouteResult("ErrorPage",null);
}
}
protected override void OnAuthentication(System.Web.Mvc.Filters.AuthenticationContext filterContext)
{
//fill userPrincipal…
filterContext.Principal = new RolePrincipal(userPrincipal);
//Or pass an ActionResult, if you want
filterContext.Result = new RedirectResult("http://www.stackoverflow.com");
}
IAuthenticationFilter
接口是两周前(3月22日)添加到 ASP.NET MVC 中的:http://aspnetwebstack.codeplex.com/SourceControl/changeset/178ec82f90f056f958994903fe0998d3e127a0cb - nemesv