在项目中我们经常使用shiro进行权限控制,来保证登录后台的各种身份职能进行他们拥有权限的操作。
但是在后台数据列表中 我们经常要对指定的数据进行某些操作,但是jqGrid渲染时无法直接进行shiro权限的判断。
如上,某些订单可以进行退款的操作,但是退款操作的权限我们又想只给财务进行操作,就需要在表格渲染的时候进行按钮的权限判断。
如下列出两种解决方案:
1. 后台进行权限控制,前端进行提示
当用户点击退款按钮时,后台进行权限判断,当用户具有权限的时候,允许进行下一步操作,当没有权限的时候,提示用户没有权限进行操作。
当然我们今天主要讨论的并不是这种
2. 渲染时处理,根据权限判断显示与否
页面根据权限控制,生成指定Id的input,用于jqgird渲染
#if($shiro.hasPermission("order:refund"))
<input type="text" id="isRefund" value="1" style="display:none"/>
#end
jqgrid渲染时对该值进行判断,以确定是否应该显示该值
{label: '操作', width: 80,formatter: function (value, col, row) {
if($("isRefund").val() == 1){ //判断该值是否存在也行
return ...; //需要显示的按钮
}else{
return ...;
}
}
}