2013-12-09 109 views
0

有什么办法可以在ASP.NET MVC4中挂接到(我想在登录后直接检查某些条件)登录过程。我正在使用Visual Studio提供的默认MemberShip类。挂钩登录(MVC4)

回答

0

是的,你可以在OnAuthorization方法上创建你的AuthorizeAttribute并实现你的登录。

这里有一个例子:

public class AuthenticateAndAuthorizeAcsMvcAttribute : System.Web.Mvc.AuthorizeAttribute 
{ 
    public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext) 
    { 
     var principal = filterContext.HttpContext.User; 
     if (principal == null || !principal.Identity.IsAuthenticated) 
     { 
      filterContext.Result = new ViewResult() 
      { 
       ViewName = "AcsLogin", 
       ViewData = filterContext.Controller.ViewData, 
       TempData = filterContext.Controller.TempData 
      }; 
      return; 

     } 
     base.OnAuthorization(filterContext); 
    } 

} 
+0

追随你的代码中,我得到以下异常:“给定的过滤器实例必须实现以下过滤器接口中的一个或多个:个IAuthorizationFilter,IActionFilter,IResultFilter,个IExceptionFilter。”当使用System.Web.Http和使用System.Web.Mvc时,它说没有合适的方法来覆盖。 – Choraimy

+0

@Choraimy对不起,我刚刚在codeproject上找到了代码,无法对其进行测试。我只是告诉你,你应该重写OnAuthorization方法。我已经修正了上面的示例。干杯。 –