Sudip A Ответов: 2

Добавьте только аутентификацию администратора на открытый в противном случае веб-сайт MVC


У меня есть сайт MVC 4, который на данный момент работает без аутентификации. Теперь есть требование добавить к нему админ-раздел.

Раздел администратора можно просмотреть, добавив /Admin В конце URL-адреса веб-сайта. Теперь я хочу убедиться, что только некоторые конкретные пользователи-администраторы могут войти в раздел администратора. Для этого я создал таблицу в базе данных и аутентифицирую их в своем методе входа в контроллер.

Что я уже пробовал:

Теперь, как только учетные данные будут проверены, я помещаю следующую строку кода и перенаправляю его на панель администратора

FormsAuthentication.SetAuthCookie(userName, false);
return RedirectToAction("AdminDashboard", "Admin");


И я добавил атрибут Authorize к методу AdminDashboard следующим образом:

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


Но после успешного входа в систему я получаю следующую ошибку:
Аутентифицированный пользователь не имеет доступа к ресурсу, необходимому для обработки запроса.


Что я здесь упускаю?

2 Ответов

Рейтинг:
2

Vignesh Mani

Your controller needs to be decorated with appropriate authorization attribute like following

[Authorize(Roles = "Administrator")]
In your web.config, you need to have following code inside your system.web configuration

<roleManager enabled="true" defaultProvider="YourRoleProvider">
Finally you need to see if that user has been added to their respective roles


Sudip A

Но мне не нужен поставщик ролей. Это экран администратора с одним логином администратора. Просто хочу убедиться, что ни один анонимный пользователь не сможет добраться до этого метода действий. Я просто хочу, чтобы для проверки подлинности учетных данных, и установить двиг печенье в true.

Рейтинг:
2

Richard Deeming

Проверьте свой web.config файл-последние версии MVC не используют проверку подлинности форм и явно удаляют модуль.

Ищите линию, похожую на:

<remove name="FormsAuthenticationModule" />

под элементом под названием modules Если он существует, удалите его.

Затем убедитесь, что у вас правильно настроена проверка подлинности форм:
<authentication mode="Forms">
  <forms ... />
</authentication>


Там больше информации этот поток StackOverflow[^].