• ssh整合easyui的权限设计(登录不同账号关联不同的role获取不同的权限)


    基于权限基础表建立,权限基础数据操作。

    简单叙述下流程:

    登录账号:获取当前账号绑定的role,根据role获取此role关联的action,action为菜单的时候怎么做,为按钮的时候怎么做。

    此处介绍一种最简单的方法仅供参考。

    第一步 登录

    流程:

    前台:

    1.发送账号密码到action(各种验证不再讲述)

    actiong层

    1.根据账号密码进行查询

    2.获取role 保存到session

    3.获取action 保存到session

    4.登录失败提示

    public String login() {
            String r = "";
    
            T_user u = service.getByHql("from T_user where t_name='"
                    + data.getT_name() + "'and t_password='" + data.getT_password()
                    + "'");
            if (u != null) {
                Set<T_role> roles = u.getRole();
                for (Iterator<T_role> iterator = roles.iterator(); iterator
                        .hasNext();) {
                    T_role role = iterator.next();
                    getSession().setAttribute("role", role.getName());
                    getSession().setAttribute("roleid", role.getId());
                    Set<Menu> menu = role.getMenu();
                    List<Menu> list = new ArrayList<Menu>(menu);
                    getSession().setAttribute("action", list);
                }
                r = "login";
            } else {
                r = "loginOut";
            }
            return r;
        }

    这样的话就将所有action保存了到了session中(此处没有加按钮,以后会做一份优化的,此时没有时间)

    然后权限菜单树根据角色生成不同的菜单

    前台

    1.easyui异步树

    action层

    1.获取角色Id

    2.根绝角色id查关联节点

    3.生成异步树

    //获取当前角色的权限树
        public void getRoleTree()
        {
            
            String  roleId=(String) getSession().getAttribute("roleid");
            JSONArray jsonArray =new JSONArray();
            
            String hql="";
            try {
                if(id!=null&&!id.equals(""))
                {
                    hql="From Menu Where pid='"+id+"'";
                    
                }
                else
                {
                    hql="From Menu Where pid=NULL";
                }
                    
                List<Menu> list=service.find(hql);
                    
                for(int i=0;i<list.size();i++)
                {
                    Set<T_role> role =new HashSet<>();
                    role=list.get(i).getRole();
                    JSONObject json=new JSONObject();
                
                    for (Iterator<T_role> iterator = role.iterator(); iterator.hasNext();) {
                        T_role r = iterator.next();
                        if(r.getId().equals(roleId))
                        {
                            
                            json.put("id", list.get(i).getId());
                            json.put("text",list.get(i).getName());
                            if(service.find("From Menu Where pid='"+list.get(i).getId()+"'").size()==0)
                            {
                                json.put("state","open");
                            }
                            else if(service.find("From Menu Where pid='"+list.get(i).getId()+"'").size()>0)
                            {
                                json.put("state","closed");
                            }
                            JSONObject j=new JSONObject();
                            j.put("url",list.get(i).getUrl());
                            json.put("attributes",j);
                            jsonArray.add(json);
                            
                        }
                        
                        }
                    }
                    
            } catch (Exception e) {
                // TODO: handle exception
                
                logger.info(e.toString());
            }
            writeJson(jsonArray);
        }

    对于按钮保存到session的思路为再

    getSession().setAttribute("quanxian", "none");在session中保存对应按钮的标识为显示或隐藏

    按钮上style="disply:${sessionScope.quanxian}"

    这样的话就将对应的按钮隐藏了。当然后面有更好的方法先写到这里,后面会有更好的方法。

  • 相关阅读:
    委托学习小记(1)
    C# 对XML的 创建、查询
    C#多线程学习(六) 互斥对象
    C#多线程学习(二) 如何操纵一个线程
    C#多线程学习(四) 多线程的自动管理(线程池)
    16/11/22_plsql
    写日志
    内存检测
    开源
    vs2005 远程调试。
  • 原文地址:https://www.cnblogs.com/wsy123/p/4463086.html
Copyright © 2020-2023  润新知