权限管理
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权限学习-第一天
评论前必须登录!
登陆 注册