MVC+ajax权限管理
2015-07-02 11:48
106 查看
不喜欢说废话,直接了当:
1、控制器
2、ajax
3、页面
在大神面前来说,这就是个菜,但是加载这个菜单的时候,可能因为新手的缘故,对自己解决问题还是挺满意的。
解释一下:
控制器里面其实就是输出html字符串,ajax里面的就是加载一下这个字符串。页面调用显示
这里其实就是我的权限判断了,我觉得这样做的话后台代码也没有那么容易暴露,因为这个权限是基于 User、Menu、Role做的,我觉得这个思路就是这个样子
1、控制器
/// <summary> /// 获取列表 /// </summary> /// <returns></returns> public ActionResult GetRoleList() { return View(); } public string GetListF(int id) { List<CM_Menu> list= _menuService.GetListF(id); string html = ""; if (list.Count > 0) { foreach (var item in list) { html += "<li><button onclick=GetMenu(" + item.Id + ") class='button'>" + item.Name + "</button>"; } } return html; } /// <summary> /// 子菜单加载(权限) /// </summary> /// <param name="id"></param> /// <returns></returns> public string GetListSon(int id) { //权限判断 CM_Info_Role roleModel = Session["InfoRole"] as CM_Info_Role; string role = roleModel.Role; List<CM_Menu> list= _menuService.GetListSon(id); string html = ""; if (list.Count > 0) { for (int i = 0; i < list.Count;i++ ) { int temp = Convert.ToInt32(list[i].ShowName.Replace("role", "").Trim()); if (role.Substring(temp, 1) == "1") { html += "<li><a href='" + list[i].URL + "' target='_blank' >" + list[i].Name + "</a></li>"; } else { html += ""; } } } return html; }
2、ajax
function bodyonload() //加载的是父ID为0的,即最主要的菜单 { var data = 0; $.ajax({ type: 'post', async: false, data: { id: data }, url: '/Menu/GetListF', dataType: 'html', success: function (json, textStatus) { $("#MenuListF").append(json); }, complete: function (XMLHttpRequest, textStatus) { }, error: function (XMLHttpRequest, textStatus, errorThrown) { $.messager.alert("失败提示", textStatus); } }); //GetMenu(0);//初始化加载0的 } function GetMenu(fid)//获取 { $.ajax({ type: 'post', async: false, data: { id: fid }, url: '/Menu/GetListSon', dataType: 'html', success: function (json, textStatus) { //if (!$("#MenuListSon").has("li").length) { // $("#MenuListSon").append(json); //} //else { $("#MenuListSon > *").remove(); $("#MenuListSon").append(json); //} }, complete: function (XMLHttpRequest, textStatus) { }, error: function (XMLHttpRequest, textStatus, errorThrown) { $.messager.alert("失败提示", textStatus); } }); }
3、页面
<div id="head_wrap" class="container_12"> <div id="logo" class="grid_4"> <h1><span>logo</span></h1> </div> <div id="controlpanel" class="grid_8"> <ul> <li><p><strong>你好,用户名</strong></p></li> </ul> </div> <div id="navigation" class=" grid_12"> <ul id="MenuListF"> </ul> </div> </div><!-- end headwarp -->
在大神面前来说,这就是个菜,但是加载这个菜单的时候,可能因为新手的缘故,对自己解决问题还是挺满意的。
解释一下:
控制器里面其实就是输出html字符串,ajax里面的就是加载一下这个字符串。页面调用显示
int temp = Convert.ToInt32(list[i].ShowName.Replace("role", "").Trim()); if (role.Substring(temp, 1) == "1") { html += "<li><a href='" + list[i].URL + "' target='_blank' >" + list[i].Name + "</a></li>"; } else { html += ""; }
这里其实就是我的权限判断了,我觉得这样做的话后台代码也没有那么容易暴露,因为这个权限是基于 User、Menu、Role做的,我觉得这个思路就是这个样子
相关文章推荐
- 借助Nodejs探究WebSocket
- Android开发框架之xUtils学习
- [LeetCode] Word Break
- 5、JAVA数据库连接池实现
- block函数(二)
- 《windows核心编程系列》一谈谈windows中的错误处理机制(转)
- CodeForces 225A
- JDK的动态代理
- MagicSuggest实现根据输入进行选择提示的下拉框
- 研究SLAM网站和有用站点-sourcecode+测试数据
- 七牛整合php上传从微信下载接口下载下来的文件
- html5 之 canvas 相关知识(一)概念及定义
- Nginx屏蔽访问过于频繁的IP
- block函数(一)
- 6.加载器代码分析
- Convolutional Neural Networks卷积神经网络(二)
- struts2没配置的访问方式
- PHP的Socket通信之UDP通信实例
- Linux网卡虚拟化
- BaiduMap---百度地图官方Demo之地理编码功能(介绍地址信息和坐标之间的相互转换)