2015-10-20 2 views
-1

Я только начинаю пытаться использовать MVC и уведомлять об атрибуте authorize, чтобы ограничить доступ к аутентифицированному пользователю. К сожалению, сейчас это не работает.Как использовать атрибут авторизации MVC?

Ниже мой код:

Web.config:

<authentication mode="Forms"> 
    <forms loginUrl="/Login/Index" timeout="30"/> 
</authentication> 

Войти Контроллер:

[AllowAnonymous] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    [HttpPost] 
    [AllowAnonymous] 
    public ActionResult ValidateLogin(UserLogin userLog) 
    { 

     if (userLog.UserName != "admin" || userLog.Password != "admin") 
     { 
      ModelState.AddModelError("Error Message", "Wrong Login Credentials."); 
      return View("Index", userLog); 
     } 

     return RedirectToAction("Index", "Home"); 
    } 

Главная Контроллер:

[Authorize] 
    public ActionResult Index() 
    { 
     return View(); 
    } 

Это будет по-прежнему блокировать доступ после введите правильный логин.

спасибо.

+2

Ну проверки пользователя, но вы на самом деле не войти – DavidG

ответ

1

Попробуйте расширить свой метод входа в систему с действительным входа по AuthenticationManager:

[HttpPost] 
[AllowAnonymous] 
public ActionResult ValidateLogin(UserLogin userLog) 
{ 
    if (userLog.UserName != "admin" || userLog.Password != "admin") 
    { 
     ModelState.AddModelError("Error Message", "Wrong Login Credentials."); 
     return View("Index", userLog); 
    } 

    // Signing in the user will make the Authorize attribute work! 
    AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, await user.GenerateUserIdentityAsync(UserManager)); 

    return RedirectToAction("Index", "Home"); 
} 

АЛЬТЕРНАТИВА: Я сердце о FormsAuthentication, но не использовал его до сих пор, может быть, это вариант для вы, но AuthenticationManager настолько прост в использовании!

Логин:

FormsAuthentication.SetAuthCookie(username, false); 

Выход:.

FormsAuthentication.SignOut(); 
+0

Привет, спасибо. Я до сих пор не уверен, что на самом деле авторизовать проверку, чтобы разрешить доступ? Есть ли другой способ, который не использует AuthenticationManager, как наша собственная аутентификация входа? Спасибо – hollycrab

+0

Может быть, вам следует искать настраиваемый атрибут авторизации? –

+0

Привет, поэтому, чтобы аутентифицировать пользователя в MVC и использовать атрибут Authorize, мы должны использовать AuthenticationManager и не можем использовать что-то вроде cookie? Спасибо. – hollycrab

Смежные вопросы