2013-08-26 3 views
2

Я пытаюсь написать метод Login, который аутентифицирует и авторизует пользователей на моем веб-сайте, разработанном с помощью ASP.NET MVC 4. Проблема заключается в том, что я вызываю метод FormsAuthentication.SetAuthCookie после проверки пользователь внутри метода Login и перенаправляет на действие ViewProfile, User.Identity.IsAuthenticated возвращает false в моем настраиваемом объекте атрибута Authorize.ASP.NET MVC 4 User Authentication

Я дал код ниже:

[HttpPost] 
[AllowAnonymous] 
public ActionResult Login(LoginModel model) 
{ 
    if (Membership.ValidateUser(model.Username, model.Password)) 
    { 
     FormsAuthentication.SetAuthCookie(model.Username, model.RememberMe); 
     return this.RedirectToAction("ViewProfile"); 
    } 
    ModelState.AddModelError("", "The user name or password provided is incorrect."); 
    return View(model); 
} 

[MyAuthorize(Roles = "Super Role, Seeker")] 
public ActionResult ViewProfile() 
{ 
    if (ModelState.IsValid) 
    { 
    ... 
    } 
} 

А вот код MyAuthorizeAttribute класса

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)] 
public class MyAuthorizeAttribute : AuthorizeAttribute 
{ 
    protected override bool AuthorizeCore(HttpContextBase httpContext) 
    { 
     if (httpContext == null) 
      throw new ArgumentNullException("httpContext"); 

     var user = httpContext.User; 
     if (!user.Identity.IsAuthenticated) 
      return false; 

     ... 
    } 
} 

Что мне не хватает?

+0

Вы можете увидеть Authentication Forms cookie устанавливается и отправляется при последующем вызове при перенаправлении? –

ответ

4

Для тех, кто может использовать FormsAuthentication и столкнуться с подобной ситуацией, быть уверенным, что следующая конфигурация существует в файле web.config

<authentication mode="Forms"></authentication> 

Теперь все работает отлично