【发布时间】:2015-09-17 22:23:17
【问题描述】:
我有一个使用 JQuery DataTables 的应用程序。我希望为每个用户显示这些表格,但只允许特定角色的用户使用点击功能。
所以,我可以用这个在控制器上设置授权...
[Authorize(Roles = "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
}
});
});
我想在 click 事件周围加上一些东西...
if (role == "Admin") { //click event in here }
现在,我知道角色在服务器端,而 javascript 在客户端。
我已经看到了一些关于使用 razor 语法将某些内容输出到隐藏列中然后使用 javascript 获取该值的建议。像这样的...
@if (User.IsInRole("Admin"))
{
<input type="hidden" id="isAdmin" value="true">
}
但是,这并不安全,因为仍然可以访问隐藏字段。 我可以通过什么正确的方式使用这些身份角色来处理我的 javascript?
【问题讨论】:
-
对于不应该看到它的用户,您需要完全避免在页面上出现点击事件,否则没有什么可以阻止他们操纵 if 语句。
标签: javascript c# jquery asp.net-mvc asp.net-identity