2016-05-19 2 views
-1

Мы столкнулись с следующей проблемой. Мы разработали набор страниц для входа в систему для нашей системы. И пользователи могут иметь одну из 5 ролей: Free User Type 1, Premium User Type 1, Free User Type 2, Premium User Type 2 и Admin. Проблема заключается в том, что даже если все страницы для каждой из этих ролей должны выглядеть почти одинаково, но они все еще немного различаются в зависимости от роли пользователя (например, ссылки указывают на разные URL-адреса или различные модальные отображаются при нажатии кнопок, некоторые параметры показаны, а некоторые скрыты). Что мы пытаемся сделать, так это обернуть все это небольшими частичными представлениями и отобразить разные частичные представления в зависимости от роли пользователя. Но он становится все более сложным. Возможно, существует какая-то модель дизайна или общий подход к решению этой проблемы? Спасибо!ASP.NET MVC. Создание представлений Razor на основе роли пользователя

+0

Вы могли бы реализовать [вид двигателя пользовательских бритвы] (http://stackoverflow.com/questions/9838766/how-do-i-implement-a-custom-razorviewengine-to-find Вид-в-нестандартный-Locati). Это может содержать логику переключения пользователя. – Liam

ответ

0

Похоже на ваше описание, которое не является на 100% понятным, что лучшим подходом было бы создание разных частичных представлений для разных ролей.

Затем при входе войдите в роль пользователя из базы данных и верните различные частичные представления в зависимости от роли.

Если у вас несколько парциальных представлений, то есть более одной страницы на роль пользователя, вы можете добавить роль пользователя в сеанс или файл cookie, чтобы вам не пришлось снова ударять DB.

Идентификатор рекомендую использовать метод cookie, если это так.

Set Session

var userRole = 1; 

Session["UserRole"] = userRole; 

Получить Сессия:

var userRole = Session["UserRole"] as int?; 

Set Cookie

var cookie = new HttpCookie("UserRole"); 
      cookie.Value = GetUserRole(); 
      cookie.Expires = DateTime.Now.AddDays(1); 
      HttpContext.Current.Response.Cookies.Add(cookie); 

Получить Cookie

if (HttpContext.Current.Request.Cookies["UserRole"] != null) 
{ 
    var userRole = HttpContext.Current.Request.Cookies["UserRole"].Value); 
} 
Смежные вопросы