如题,用的SSH框架开发,现在想要做一个这样的功能,现在我能想到的有两种方法
一种是将所有功能按钮编号,然后保存在数据库和权限表关联,然后根据权限读取出编号传到前端做判断是否能点击
二种是全部在前端处理,不通过数据库,直接将权限表中的值带到前端,功能按钮全部静态,根据后台传到前端的权限值来判断是否点击
这两种方法有个共同点就是前段必须要做判断,要是功能按钮少的话还好,要是多的话是不是会影响性能。求大神给我个常用的解决思路。能够有示例当然最好了 拜谢拜谢!

解决方案 »

  1.   

    其实你第一种和第二种不都是用到了权限表吗。。怎么第二种就不用通过数据库了。第一种很绕就是了。既然有权限这个问题,那么肯定就有角色的区分,在角色登录后立马查询该角色拥有哪些权限,根据权限来确定哪些是不可点击的。
    如果你不是动态加载的话如下:比较麻烦//伪代码
    var btn=['a','b','c','d'];//假设一共4个按钮,当前角色只拥有点击A,C的权限
    var power=['a','c'];//从后台获取的权限数据
    for(i in btn)
    {
     for(t in power)
    {
    power[t]==btn[i]&&(创建该可点击按钮,btn.splice(i,1));}}
    for(x in btn )
    {
    //创建剩下的不可点击按钮

    }这样写的话看上去比较麻烦,一般都是没有权限直接就不加载了,如果你非要显示的话,就需要比对每个按钮是否有权限,这样会显得繁琐多了几个循环,但是好处在于是先判断了权限之后再加载出来的数据。而不是通过添加disable才让他不可点击,这样造成代码还没执行到这里的时候按钮时可点击的。另外你还得注意的一个问题是,如果你全部都显示出来,比如四个按钮,实际上只有两个有权限,懂代码的人是可以更改的。这不是显示不显示的问题,所以最佳的解决方案是,从数据库动态加载按钮,其他不加载。
      

  2.   

    只有个一个权限的字段属性  然后在前端用   <c:choose>
                                        <c:when test="${1==vo.state}">
                                          1
                                        </c:when>
                                        <c:otherwise>
                                          2
                                        </c:otherwise>
                                    </c:choose>
    这样的方式搞判断显示按钮就可以了
      

  3.   

    可以使用权限框架,例如shiro
      

  4.   

    用shiro权限框架,这样在前端页面只需要这样写就好了。
    <shiro:hasPermission name="company:list">
    <button type="button" id="searchBtn" class="btn btn-primary btn-sm">
    <i class="fa fa-search fa-btn"></i>查询
    </button>
    </shiro:hasPermission>后端控制器这样配
    @RequestMapping("admin/party/company_listUI")
    @RequiresPermissions("company:list")
    public String company_listUI(HttpServletRequest request){
    XXXXXXXX
    return "admin/party/company/company_listUI";
    }然后为系统做一个权限管理模块,要建角色表、功能表、权限表。
      

  5.   

    之前做过类似的,可以用shiro,或者直接自己弄一个角色表,权限表,然后在登录的时候在session作用域获取所有权限,前端直接不显示,当然也是可以显示的,只是后台请求做控制。后台每个请求都弄一个自定义注解(标明这个请求是哪个权限的),拦截所有请求,有权限的才让他通过,没有权限就返回信息。