背景:
由于页面元素需要做权限控制,而shiro标签只能用在jsp页面,对于js动态生成的html则无能为力。
首先想到写一个判断是否有权限的js函数,该函数调用controller处理请求(ajax)。由于待处理的数据不能放到
success方法中,所以是以返回值的形式判断。所以计划先取到当前用户的所有权限作为返回值(set),在需要判断的地方
遍历。
遇到的问题:
该函数是页面加载完立即执行,不论同步还是异步请求数据,总会存在调用时set还没有取到值的情况(随机的)。
解决办法:
很简单,只需要在拦截器中把权限set放到request中,request.setAttribute("cu_permissions",cu_permissions);
然后在通用的jsp页面中添加js:var cu_permissions=eval('${cu_permissions}');
注意:
cu_permissions是需要转为json字符串的:JSONArray.formObject(set).toString();