Как использовать атрибут авторизации MVC?

-4

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

Ниже мой код:

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();
}

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

Спасибо.

спросил(а) 2015-10-21T02:59:00+03:00 5 лет назад
0
58

Попытайтесь расширить свой метод входа в систему с помощью логина loginmanager:

[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();

ответил(а) 2015-10-21T12:12:00+03:00 5 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема