2016-08-20 2 views
1

J'ai créé HomeController décoré avec AuthorizeAttribute, et a également créé AccountController, mais il ne réoriente à l'action Login() de AccountController.attribut Mvc Autorisez ne fonctionne pas

contrôleur Home:

[Authorize] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

contrôleur de compte:

public class AccountController : Controller 
{ 
    [HttpGet] 
    public ActionResult Login() 
    { 
     return View(); 
    } 

    [HttpPost] 
    public ActionResult Login(LogOnCustom log) 
    { 
     if(ModelState.IsValid) 
     { 
      if(Membership.ValidateUser(log.UserName,log.Password)) 
      { 
       FormsAuthentication.RedirectFromLoginPage(log.UserName, log.Isremeber); 
      } 
      else 
      { 
       ModelState.AddModelError("", "logOn error"); 
      } 
     } 
     return View(log); 
    } 
} 

web.config:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" > 
    </forms> 
</authentication> 
+0

Veuillez noter que la balise model-view-controller est destinée à des questions sur le motif. Il existe une balise spécifique pour l'implémentation ASP.NET-MVC. –

+0

@StephenMuecke merci – anitha

Répondre

0

Je viens d'avoir le même problème. Vérifiez votre web.config et voir si elle contient cette ligne:

<system.webServer> 
    <modules> 
    <remove name="FormsAuthentication" /> 
    </modules> 
</system.webServer> 

Supprimez la ligne « <remove name="FormsAuthentication" /> » et il devrait commencer à travailler. Lorsque le module FormsAuthentication est supprimé, aucun code n'écoute l'événement 401, il n'a donc aucune chance de rediriger l'utilisateur vers la page de connexion.