2

Я довольно новичок в ASP.NET MVC, и я пытаюсь создать веб-сайт, на котором используются встроенные методы авторизации MVC 5.Индивидуальная авторизация страницы на основе ролей в ASP.NET MVC 5

Вот что я сделал до сих пор:

  1. Создано число пользователей в таблице AspNetUsers.
  2. Создал ряд ролей в таблице AspNetRoles.
  3. Назначение ролей пользователям через таблицу AspNetUserRoles путем подключения RoleID и UserID.

Теперь, чтобы создать одну страницу, чтобы показывать только определенный контент для пользователей с админ-роли, и скрыть это иначе, я сделал это:

@if(User.IsInRole("Admin")) 
{ 
    <p>You are logged in as an admin.</p> 
} else 
{ 
    <p>You are not logged in as an admin.</p> 
}; 

Допустимо ли это сделать , или это плохо? Я играл с ним довольно долгое время, и он работает, как и ожидалось (насколько я могу судить).

Я знаю, что могу создавать атрибуты CustomAuthorizationAttributes и назначать их ActionMethods в контроллере, но я не на 100% удобен с синтаксисом на этом.

+0

Кажется, что. Будет очень ограниченным, и если вы сделаете это в нескольких местах, у вас будет высокое обслуживание кода. Подумайте о создании постоянной коллекции для имен ролей, чтобы вы могли, по крайней мере, переименовать их или легко изменить их в будущем, если понадобится :) –

ответ

1

Если вы довольны синтаксисом, это прекрасно.

Но вы не можете забыть защитить само представление атрибутом Authorize. Вы можете использовать значение по умолчанию, как указано ниже:

[Authorize(Roles = "Admin")] 
public ActionResult Register() 
{ 
... 
return View(); 
} 
+0

Хорошо, но не будет ли это просто отправить пользователя на страницу входа, если он не админ ? – Scopperloit

+0

Да, по умолчанию он делает, но это можно легко изменить любым способом. Коллекция ссылок, связанных с базовыми страницами По умолчанию goto страница ... –

+0

А, я вижу. Благодаря :) – Scopperloit

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