extjs 的权限问题 要求控制的对象是 菜单,按钮,URL

extjs 的权限问题 要求控制的对象是 菜单,按钮,URL

这两天在解决extjs 的权限问题。要求控制的对象是 菜单,按钮,URL

解题思路1 : 重载Connection类
由于extjs和server端交互全都是 json格式的数据交互,server端不会控制页面的跳转,页面跳转,提示功能全都有extjs来完成。
extjs和server端的交互方法全都是继承自 Ext.data.Connection,这个类中可以拦截所有和server端交互的方法。
server端的权限控制用acegi做的,如果没通过acegi的验证,没有授权会返回到403.jsp,需要重登录会返回到 login.jsp。
因此重载Connection类,并改写其中的 handleResponse 方法,判断返回的结果是否是 403.jsp,login.jsp, 如果是就进行相应的控制,如果是正常的返回数据就继续向下执行。
我个人在403.jsp 和login.jsp 的第一行加上了 注释代码,就是靠这个关键字来工作的
,代码如下:

复制代码 代码如下:

//此处重载了Cunnection方法,用来拦截client与Server的交 互,
//后台acegi拦截用户请求后,如果无权限,返回403.jsp;如果没登录,返回login.jsp;
//通过Acegi拦截 后,才返回用户想要的Json结果
Ext.override(Ext.data.Connection, {
handleResponse : Ext.data.Connection.prototype.handleResponse.createInterceptor(
function(response) {
var resText=response.responseText;
if (resText.length>10) {
resText=resText.substr(0,9);
}
if (resText=='