|
您是否还在为传统生意竞争激烈,利润越来越微薄而陷入瓶颈苦苦挣扎?或者是,白天上班忙到疯,看别人脸色,忙来忙去工资也就3-5千,过着三等人的生活(等下班,等工资,等退休)的打工族?您喜欢这样的工作方式吗?有个这样的合法零风险无门槛,没有加盟费,不受地域限制,不愁人脉,产品多样化,适合普通大众的事业,可以交流,详细了解加微信rg9519大家都晓得,中国的网络开展即短也是更快。目前中国的网民是全球第一,早在十年前,中国的网络还存在着绝对的激进和不认可。网络传奇人物的马云等呈现后,人们才开端逐渐承受网络。但中国网络在十来年的开展速度,可以说是全球第一。因而,中国的网络平安管理及相关网络方面的法规也在逐渐完善之中。你所说的那种状况应该属于网络推广当中的一种办法。大家都晓得,网络推广就是少量的客户经过互联网搜索,找到某网站、商铺,检查商品卖点,给我们打电话或以其它方式与我们联络,由一个潜在客户变为无效客户的进程称之爲网络推广。网络推广就是以国际互联网爲媒体,应用数字化的信息和网络媒体的交互性来辅佐推广目的完成的一种新型的市场推广方式:网络推广网店推行电商推广挪动推广,。复杂地说,网络推广就是以互联网爲次要手腕停止的,爲到达一定推广目的的推广活动。网络推广概念的同义词包括:心动推广,论坛推广,线上推广,互联网推广,在线推广,口碑推广,视频推广,网络事情推广,社会化媒体推广,微博推广,博客推广,知识推广,整合推广,百科推广,百度晓得,百度贴吧,百度推行,B2B推广,B2C推广,网络品牌推行,邮件推广,即时聊天软件推广,网络精准推行等。基于你所说的那种状况,对方也是极有能够采取了一种群发战略,招致招聘网站上的相似信息特别多。在中国网络相关法规还不健全的状况下,是没方法去管理的。除非这些招聘网站上的信息由该网站管理员来停止管理,但这属于一个很大的任务量。因而,相似这样的状况,日后我国还是会有相关的管理方法的。c#应用程序开发招聘人才网站可以实现主要就是需要了解业务就可以开发了数据维护,安全(数据库);;网站设计,页面;;软件开发,面向对象一、前言刚到公司没多长时间就开始接触MVC到现在不能说懂了,只能说到达会用这个层次吧,感觉MVC用来写Web还是很强大的,层次清晰。今天我来写写关于权限管理这一块,自我感觉网站的权限主要分为菜单权限和角色权限,首先说角色权限,比较简单不同角色可以看到不同页面这就是角色权限,菜单权限也可以说是操作权限,就是具体到某一个按钮,或某一个下拉框的查看权限或使用权限。二、角色权限1.用户角色首先来角色权限,每个用户有着多样不同的角色,一对多的关系。2.菜单管理在菜单管理中我们就可以这样管理,某一菜单,那一角色可以看到就打上√这样比较容易控制。3.数据库再来看数据库中,要有角色的表以及用户与角色关系表。再就是角色与菜单的关系表,其中PermissionIDs字段为操作权限以|隔开。4.用户登录当用户登录时我们就可以根据登陆人的ID取到他的所有角色存到Session中,并根据登录人查出相应的菜单。//角色基本信息SqlHelperParametersqlHelperParameterRole=newSqlHelperParameter();sqlHelperParameterRole.Add(UserId,dtUserRow[UserId].ToString());DataTabledtRole=SqlHelper.ExecuteDataTable(@selectSys_Roles.RoleId,Sys_Roles.RoleName,Sys_Roles.Weightfrom(selectUserId,RoleIdfromSys_UsersInRoleswhereUserId=@UserId)asaleftjoinSys_Rolesona.RoleId=Sys_Roles.RoleId,sqlHelperParameterRole);intdtRoleCount=dtRole.Rows.Count;RoleWeightMax=int.MaxValue;for(inti=0;i<dtRoleCount;i++){RolesSessionrs=newRolesSession();rs.RoleID=Guid.Parse(dtRole.Rows[i][RoleId].ToString());rs.RoleName=dtRole.Rows[i][RoleName].ToString();rs.Weight=Convert.ToInt32(dtRole.Rows[i][Weight]);if(RoleWeightMax>rs.Weight){RoleWeightMax=rs.Weight;}RoleList.Add(rs);}publicclassRolesSession{publicGuidRoleID{get;set;}publicstringRoleName{get;set;}//权重publicintWeight{get;set;}}前台代码:<divdata-options=region:west,split:truetitle=导航菜单style=width:200px;padding1:1px;overflow:hidden;id=left_nav><divclass=easyui-accordiondata-options=fit:true,border:false>@H9C.PMS.BLL.LogOn.MenuList.GetMenu(ViewBag.UserName)</div></div>控制器:publicstaticMvcHtmlStringGetMenu(stringuserName){Menumenu=newMenu();MenuStructurems=menu.GetMenuListStructure(userName);if(ms!=null){ms.Children.Remove(ms.Children.FirstOrDefault(o=>o.ModelCode==0&&o.ParentID==0));}returnnewMvcHtmlString(MenuNav(0,ms));}privatestaticstringMenuNav(stringmenuCode,MenuStructuremenuStruc){if(menuStruc==null){return<div>没有可用菜单</div>;}List<MenuStructure>list=menuStruc.Children.Where(m=>m.ParentID==menuCode).ToList();StringBuildersbMenu=newStringBuilder();foreach(variteminlist){if(item.ParentID==0){sbMenu.Append(<divtitle=+item.Title+style=overflow:auto;>);sbMenu.Append(<ulid=menu+item.ParentID+class=easyui-treeanimate=truednd=true>);sbMenu.Append(<li>);}else{sbMenu.Append(<ulid=menu+item.ParentID+class=easyui-treeanimate=truednd=true>);if(item.Children.Count==0){sbMenu.Append(<li>);}else{sbMenu.Append(<listate=closed>);}}sbMenu.Append(<span>);if(item.Url==/){sbMenu.Append(<aclass=e-submenuhref=javascript:void(0);title=+item.Title+>);}else{stringtabsIcon=14;if(!string.IsNullOrWhiteSpace(item.Icon)){tabsIcon=item.Icon.Replace(/Content/images/,).Replace(.png,);}sbMenu.Append(<aclass=e-submenuhref=#onclick=addTab(+item.Url+,+item.Title+)>);sbMenu.Append(<imgsrc=+item.Icon+>);}sbMenu.Append(+item.Title+);sbMenu.Append(</a></span>);if(IsExistParent(item.ModelCode,item)){sbMenu.Append(MenuNav(item.ModelCode,item));}sbMenu.Append(</li>);sbMenu.Append(</ul>);if(item.ParentID==0){sbMenu.Append(</div>);}}returnsbMenu.ToString();}privatestaticboolIsExistParent(stringmodelCode,MenuStructuremenuModels){varquery=menuModels.Children.FirstOrDefault(m=>m.ParentID==modelCode);if(query==null){returnfalse;}returntrue;}菜单类:publicclassMenuStructure{publicstringModelCode;publicstringTitle;publicstringIcon;publicstringUrl;publicstringParentID;publicList<MenuStructure>Children=newList<MenuStructure>();}其中GetMenuListStructure()方法就是根据用户名获取菜单列表结构,我这里用户名在数据库中是唯一的,在这里注意一点比较麻烦的是根据类可以看出菜单是有父菜单子菜单的所以方法中需要有两个循环去添加。三、菜单权限也就是操作权限,比如某一按钮的操作权限。首先我们把所有关于按钮的操作权限存放到一个类中,(有更好的方法请向我推荐谢谢)publicclassMenus{publicstaticintgongdan=503000000;//任务工单}然后我们需要操作权限的按钮所在的页面的Controllers(加载页面)中存到ViewBag里,如下:publicActionResultIndex(){H9C.PMS.BLL.RBAC.Permissionpm=newBLL.RBAC.Permission();ViewBag.IsReportPlan=pm.IsRoleHavePermissions(Roles.Shigongduizhang,Menus.gongdan,base.UserSessionModel,Menus.GongdanReportPlanByShiGongTeamer);//上报施工计划returnView();}///<summary>///判断某权限是否在获取某角色权限的列表中///</summary>///<paramname=roleId></param>///<paramname=modelCode></param>///<paramname=userSessionModel></param>///<paramname=permissionCode></param>///<returns></returns>publicboolIsRoleHavePermissions(GuidroleId,intmodelCode,UserSessionModeluserSessionModel,intpermissionCode){List<PermissionModel>permissionModelList=this.GetRolePermissionList(roleId,modelCode,userSessionModel);if(permissionModelList==null){returnfalse;}foreach(varoinpermissionModelList){if(o.PCode==permissionCode){returntrue;}}returnfalse;}///<summary>///获取某角色权限的列表///</summary>///<paramname=roleId></param>///<paramname=modelCode></param>///<paramname=userSessionModel></param>///<returns></returns>publicList<PermissionModel>GetRolePermissionList(GuidroleId,intmodelCode,UserSessionModeluserSessionModel){foreach(varoinuserSessionModel.RoleList){if(o.RoleID==roleId){List<Model.RBAC.PermissionModel>permissionList=this.PermissionList(roleId,modelCode);returnpermissionList;}}returnnull;}///<summary>///获取某菜单某角色下具有的权限///</summary>///<paramname=modelId></param>///<paramname=menuId></param>///<returns></returns>publicList<PermissionModel>PermissionList(GuidroleId,intmenuId){List<PermissionModel>pmList=newList<PermissionModel>();using(RBACContextconnEF=newRBACContext()){Sys_Role_Model_Permissionssrmp=connEF.Sys_Role_Model_Permissions.FirstOrDefault(o=>o.ModelID==menuId&&o.RoleId==roleId);if(srmp!=null){stringpermissions=srmp.PermissionIDs;if(!string.IsNullOrWhiteSpace(permissions)){string[]pids=permissions.Split(newchar[]{|});for(inti=0;i<pids.Length;i++){if(!string.IsNullOrWhiteSpace(pids[i])){pmList.Add(newPermissionModel(){ModelCode=menuId,PCode=Convert.ToInt32(pids[i]),PName=});}}}}}returnpmList;}最后一个方法中运用到了EF根据菜单以及角色获取某菜单某角色下具有的权限前台就非常简单的:@if(ViewBag.IsReportPlan==true){@:<ahref=#class=easyui-linkbuttonl-btniconcls=icon-add>按钮</a>}四、尾声总结一下,就是首先要有一个菜单管理的模块,它不但可以管理菜单还可以管理菜单中的权限以及每个角色关于菜单的权限,然后就是后台的控制,上面权限Model中存的权重,指的是每一角色都有权重,每一个用户都有他的最大权重,根据这个权重我们就可以做很多条件的控制,简单的说也是为了方便吧。第一篇技术文档,文笔还需要多锻炼,以后会试着多写博文,不会写文档的码农不是好程序员。
|