在asp.net中的IAuthenticationFilter接口实现MVC
我正在浏览ASP.NET MVC中的Controller类,并发现它实现了IAuthenticationFilter接口。然而,我无法理解如何在我的控制器中实现OnAuthentication()和OnAuthenticationChallenge()方法,以及何时调用这些方法。在asp.net中的IAuthenticationFilter接口实现MVC
如果有人能向我解释或与我分享任何解释这一点的链接,这将是非常有益的。即使我在MSDN上无法找到任何资源。
您可以使用临时更改HttpContext.User具有自己的值的Iprincipal后代对象。只需要通过AuthenticationContext传递一个新的IPrincipal。我认为,代表另一个用户(暂时)采取行动将是有益的。例如:何时替换某人休假,还是开发阶段。所以,你可以在VS2013预览MVC 5项目中使用。
例如在控制器(如IAuthenticationFilter):
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");
}
使用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);
}
}
如果只有IAuthenticationFilter的MSDN文档包含前两个句子! – 2014-03-06 13:37:04
你不会找到任何文件,因为提到'IAuthenticationFilter'接口加入到ASP.NET MVC两个星期前(3月22日):http://aspnetwebstack.codeplex.com/SourceControl/ changeset/178ec82f90f056f958994903fe0998d3e127a0cb – nemesv 2013-04-08 11:16:12
@nemesv - 哦,是的,谢谢你的回复,我的错误。 – Bibhu 2013-04-08 11:24:31