2015-05-26 2 views
0

У меня есть приложение ASP.NET MVC 4, где я хочу показать столбцы на основе роли. Например. Ниже приведен мой модельный класс.Уязвимость на основе столбцов на основе asp.net mvc 4

public class Employee 
{ 
    public int Id {get;set;} 
    public string FirstName {get;set;} 
    public string LastName {get;set;} 
    public string Designation {get;set;} 
} 

На мой взгляд, я хочу отобразить столбец назначения, только если пользователь находится в роли администратора.

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

Возможно ли это с помощью ASP.NET MVC 4? Любая помощь будет оценена !.

+0

что-то в представлении должно проверить это разрешение, поскольку оно не используется по умолчанию, либо вы используете компонент «GridView», либо переопределяете «render» на основе любых настраиваемых атрибутов, которые вы создадите в свойстве «Обозначение», или создайте Метод расширения для него. – balexandre

+0

Благодарим за предложение !. Есть ли там какой-нибудь пример? –

+0

Какой компонент или плагин вы используете для своей сетки? – Yasser

ответ

0

Я не знаю, как это сделать в MVC 4, кроме, как вы говорите, проверок в представлении.

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

Конечно, это может привести к другим проблемам, таким как повторный код и т. Д., Но это вариант.

+0

все еще цель, которую я просила, не подавалась !. Я хочу, чтобы безопасность была на уровне столбца. В вашем случае обозначение будет по-прежнему присутствовать, но вы их не показываете. –

+0

Вы сказали: «На мой взгляд, я хочу отобразить столбец назначения, только если пользователь находится в роли администратора». Это делает это. Обозначение не будет отображаться в представлении без администратора. – ozz

+0

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

0

У нас было аналогичное требование в одном из наших проектов, где в таблице отчетов нам нужно было скрыть определенный столбец в зависимости от типа клиента.

Поскольку наши отчеты были загружены с использованием вызова ajax, просто показать/скрыть не имеет смысла. Coz, даже если данные скрыты в html или говорят, что вы удаляете или не отображаете эти столбцы только на html, все же значения будут существовать в json-ответе.

Вместо этого вы можете сделать это.

В зависимости от типов пользователей вы могли бы иметь классы, и эти классы имели бы свойства, которые вы хотите показать пользователям.

Например, вы могли бы начать с базового класса

public class EmployeeBase 
{ 
    public int Id {get;set;} 
    public string FirstName {get;set;} 
    public string LastName {get;set;} 
} 

, а затем более специфические.

public class EmployeeAdmin : EmployeeBase 
{ 
    public string Designation {get;set;} 
} 

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

+0

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

+0

№ Это не может быть общим, так как кто-то должен определить размер данных на основе ролей. Один класс модели для каждой роли не должен быть проблемой. Если у вас есть 100 ролей, тогда было бы разумно вводить ролегруппы и соответственно делать классы. – Yasser

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