EXTJS系列笔记————与Spring MVC集成的权限管理方案

玩过extjs的都知道,extjs其实都是一些ajax的请求,所以对权限的控制比较麻烦。这里提供本人亲测的一个方法,供大家参考

一、利用可显示方法,就是的登录以后直接在最初的页面上显示你有权限的按钮或者操作。

二、第一种基本可以实现简单的 页面管控,但是由于没有在服务器端有权限验证动作,存在较大的安全隐患,所以先在后台给Spring MVC添加一个Filter,每次请求过来判断一下有么有 权限,如果没有权限就直接返回,但是由于每次返回得知都是不一样的,没办法在前台统一解析(当然你可以统一返回格式),所以直接用response.setContentType("NoPermission"),然后返回前台。前台在在一开始加载extjs代码的时候,给所有的ajax添加一个监听器,监听每次返回完成以后的数据。如果发现返回的头文件中包含 NoPermission,就代表没有权限,直接返回到你指定的页面等等。

//给所有ajax操作添加监听器,请求前看看是不是没有登录
Ext.Ajax.addListener("requestcomplete",function(conn, response, options, eOpts){
    var msg = response.getAllResponseHeaders();
    var str = msg['content-type'];
    if(str!=null&&str!=undefined&&str!=""){
        if(msg['content-type'].indexOf('NoPermission') != -1){
            window.location.href='jsp/login.jsp';
        }
    }
},this);

这样一来,基本能完成对权限的管控。各位看官有好的方法也请一起探讨下。

这里有个问题,如果 extjs是form的submit来提交数据的话,返回的response中没有getAllResponseHeaders这个方法,所以需要稍微修改一下上面的代码,修改后的代码:

Ext.Ajax.addListener("requestcomplete",function(conn, response, options, eOpts){

    if(typeof response.getAllResponseHeaders == "function"){

        var msg = response.getAllResponseHeaders();

        var str = msg['content-type'];
        if(str!=null&&str!=undefined&&str!=""){
            if(msg['content-type'].indexOf('NoPermission') != -1){
                window.location.href='jsp/login.jsp';
            }

        }

    }else{

        //如果没有getAllResponseHeaders 方法
//说明是 form的submit ,如果返回时response.responseText 空 的话说明 是没有权限的操作。返回到 登录页面
var str = response.responseText;
if(!str){
window.location.href='toUms.jsp';
}

    }

},this);



猜你喜欢

转载自blog.csdn.net/java_dotar_01/article/details/79261583
今日推荐