Shiro权限学习-第一天

权限管理

Controller所在位置:controller->system->role->RoleController.java

1.角色(基础权限页)

JSP所在位置:WebRoot->WEB-INF->jsp->system->role_list.jsp

2.新增组

调用role_list.jsp中addRole(0)的js方法

//新增组
        function addRole(pid){
             top.jzts();
             var diag = new top.Dialog();
             diag.Drag=true;
             diag.Title ="新增";
             diag.URL = '<%=basePath%>role/toAdd.do?parent_id='+pid;
             diag.Width = 222;
             diag.Height = 100;
             diag.CancelEvent = function(){ //关闭事件
                 if(diag.innerFrame.contentWindow.document.getElementById('zhongxin').style.display == 'none'){
                    top.jzts();
                    setTimeout("self.location.reload()",100);
                }
                diag.close();
             };
             diag.show();
        }

从方法中可以看到,调用的是role/toAdd.do方法,那么我们去Controller中查看该方法,如下:

/**去新增页面
     * @param 
     * @return
     */
    @RequestMapping(value="/toAdd")
    public ModelAndView toAdd(){
        ModelAndView mv = this.getModelAndView();
        PageData pd = new PageData();
        try{
            pd = this.getPageData();
            mv.addObject("msg", "add");
            mv.setViewName("system/role/role_edit");
            mv.addObject("pd", pd);
        } catch(Exception e){
            logger.error(e.toString(), e);
        }
        return mv;
    }

从方法中看到,该方法是个跳转方法,从页面获取参数{parent_id=0},然后利用ModelAndView跳转到system/role/role_edit页面(WebRoot->WEB-INF->jsp->system->role_edit.jsp),

从图中可以看出该JSP页面调用了${pd.parent_id},并且保存的时候调用了该页面中save()方法。

//保存
    function save(){
        if(("#roleName").val()==""){("#roleName").tips({
                side:3,
                msg:'请输入',
                bg:'#AE81FF',
                time:2
            });
            ("#roleName").focus();
            return false;
        }("#form1").submit();
            ("#zhongxin").hide();("#zhongxin2").show();
    }

— TIPS:save方法提交表单,会将该页面的表单中NAME全都提到form对应的action中,由上图我们能看到,action的地址是:role/{msg}.do,{msg}是role/toAdd.do在跳转本页面的时候携带过来的参数,值是:add,所以,我们去Controller中找role/add方法。

/**保存新增角色
     * @return
     * @throws Exception
     */
    @RequestMapping(value="/add",method=RequestMethod.POST)
    public ModelAndView add()throws Exception{
        if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
        logBefore(logger, Jurisdiction.getUsername()+"新增角色");
        ModelAndView mv = this.getModelAndView();
        PageData pd = new PageData();
        try{
            pd = this.getPageData();
            String parent_id = pd.getString("PARENT_ID");       //父类角色id
            pd.put("ROLE_ID", parent_id);           
            if("0".equals(parent_id)){
                pd.put("RIGHTS", "");                           //菜单权限
            }else{
                String rights = roleService.findObjectById(pd).getString("RIGHTS");
                pd.put("RIGHTS", (null == rights)?"":rights);   //组菜单权限
            }
            pd.put("ROLE_ID", this.get32UUID());                //主键
            pd.put("ADD_QX", "0");  //初始新增权限为否
            pd.put("DEL_QX", "0");  //删除权限
            pd.put("EDIT_QX", "0"); //修改权限
            pd.put("CHA_QX", "0");  //查看权限
            roleService.add(pd);
            FHLOG.save(Jurisdiction.getUsername(), "新增角色:"+pd.getString("ROLE_NAME"));
        } catch(Exception e){
            logger.error(e.toString(), e);
            mv.addObject("msg","failed");
        }
        mv.setViewName("save_result");
        return mv;
    }

通过add方法,我们可以看到roleService.add(pd);方法将pd的增删改查权限都写入了数据库。

未完待续…

未经允许不得转载:高腾蛟 » Shiro权限学习-第一天

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册