У меня есть приложение, использующее JQuery DataTables. Я хочу, чтобы эти таблицы отображались для каждого пользователя, но разрешали только функции кликов для пользователей в определенной роли.Идентификатор ASP.NET - использование ролей с функциональностью JavaScript
Таким образом, я могу установить разрешение на контроллерах с этим ...
[Authorize(Roles = "Admin")]
этого недостаточно, потому что по-прежнему будет вызов к этому контроллеру и способу и перенаправлением для тех, кто не в " Admin ".
Допустим, у меня есть функция в моем JavaScript, как это ...
//Click event on the table row
$('#table1').on('click', 'tr', function (event) {
//Post the data to the controller
$.ajax({
type: "POST",
url: "/Controller/Action",
data: {someData : someData},
success: function() {
//do something
}
});
});
Я хотел бы, чтобы обернуть что-то вокруг этого вокруг события щелчка ...
if (role == "Admin") { //click event in here }
Теперь, Я знаю, что роли находятся на стороне сервера, а javascript - на стороне клиента.
Я видел некоторые предложения по использованию синтаксиса бритвы, чтобы вывести что-то в скрытый столбец, а затем захватить это значение с помощью javascript. Что-то вроде этого ...
@if (User.IsInRole("Admin"))
{
<input type="hidden" id="isAdmin" value="true">
}
Но это не очень безопасно, потому что скрытые поля по-прежнему доступны. Каким образом я могу использовать эти роли идентичности для работы с моим javascript?
Вам нужно избегать появления события щелчка на странице для пользователей, которые не должны его видеть, иначе ничего не мешает им манипулировать оператором if. –