ASP.NET Zero--15.一个例子(8)商品分类管理-权限控制
2017-01-21 09:49
771 查看
1.添加权限常量
打开文件AppPermissions.cs【..\MyCompanyName.AbpZeroTemplate.Core\Authorization\AppPermissions.cs】
在末尾添加如下常量:
//分类管理权限 public const string Pages_Category = "Pages.Category"; public const string Pages_Category_Create = "Pages.Category.Create"; public const string Pages_Category_Edit = "Pages.Category.Edit"; public const string Pages_Category_Delete = "Pages.Category.Delete";
2.编写代码
想在页面显示还需编写代码获取,打开文件AppAuthorizationProvider.cs【..\MyCompanyName.AbpZeroTemplate.Core\Authorization\AppAuthorizationProvider.cs】
在SetPermissions方法最后添加如下代码:
//分类权限的获取 var category=pages.CreateChildPermission(AppPermissions.Pages_Category, L("CategoryManager")); category.CreateChildPermission(AppPermissions.Pages_Category_Create, L("Category_Create")); category.CreateChildPermission(AppPermissions.Pages_Category_Edit, L("Category_Edit")); category.CreateChildPermission(AppPermissions.Pages_Category_Delete, L("Category_Delete"));
3.编辑语言文件
打开语言文件AbpZeroTemplate-zh-CN.xml【..\MyCompanyName.AbpZeroTemplate.Core\Localization\AbpZeroTemplate\AbpZeroTemplate-zh-CN.xml】
在最后添加如下代码:
<text name="Category_Create" value="添加分类" /> <text name="Category_Edit" value="编辑分类" /> <text name="Category_Delete" value="删除分类" />
4.测试
生成项目,打开角色管理--编辑角色,效果如下:![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/08/899cf5957d44e6134aa38b894a8e41c4.png)
基础工作已完成,接下来给页面按钮和应用层方法加权限。
客户端权限控制
1.打开Index.js文件
【..\mycompanyname.abpzerotemplate.web\areas\mpa\views\category\index.js】添加如下代码:
var _categoryService = abp.services.app.category; //权限 var _permissions = { create: abp.auth.hasPermission('Pages.Category.Create'), edit: abp.auth.hasPermission('Pages.Category.Edit'), 'delete': abp.auth.hasPermission('Pages.Category.Delete') };
同时修改actions里面的代码:
var $span = $('<span></span>'); if (_permissions.edit) {//判断是否有编辑权限 $('<button class="btn btn-default btn-xs" title="' + app.localize('Edit') + '"><i class="fa fa-edit"></i></button>') .appendTo($span) .click(function() { _editModal.open({ id: data.record.id }); }); } if (_permissions.delete) {//判断是否有删除权限 $('<button class="btn btn-default btn-xs" title="' + app.localize('Delete') + '"><i class="fa fa-trash-o"></i></button>') .appendTo($span) .click(function() { deleteCategory(data.record); }); } return $span;
保存,打开角色管理--修改Admin角色,加上编辑分类的权限,然后保存,效果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/08/72a838151b14bb5a5b2557d0a33b7b2a.png)
2.测试
然后打开分类管理页面,现在可看到删除按钮不会显示出来了,效果如下:![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/08/fc26427d4e9a47c5052df107512d8dd8.png)
3.添加按钮加权限
现在把"添加分类"按钮也加上权限打开Index视图【..\mycompanyname.abpzerotemplate.web\areas\mpa\views\category\index.cshtml】
修改"添加分类"按钮代码如下:
@if (IsGranted(AppPermissions.Pages_Category_Create))//判断是否有添加分类的权限 { <button id="CreateNewCategoryButton" class="btn btn-primary blue"><i class="fa fa-plus"></i>添加分类</button> }
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/08/5dd95d5e687c25e098aaf6a7ca170d83.png)
现在没有分类管理的任何权限只能查看。
服务端权限控制
接下来就是服务端权限的控制,服务端就是应用层和Web层,前端页面就属于客户端。1.控制器加权限
先来给控制器加权限,打开CategoryController【..\MyCompanyName.AbpZeroTemplate.Web\Areas\Mpa\Controllers\CategoryController.cs】
分别给方法头加上注释,代码如下:
[AbpMvcAuthorize(AppPermissions.Pages_Category)] public class CategoryController : AbpZeroTemplateControllerBase { ... [AbpMvcAuthorize(AppPermissions.Pages_Category_Create)] public ActionResult CreateModal() [AbpMvcAuthorize(AppPermissions.Pages_Category_Edit)] public ActionResult EditModal(int id) ...
保存,生成项目,刷新分类管理,你会发现跳转到登录页面了,这是因为我并没有给Admin角色添加分类管理的任何权限。
现在把登录连接%2FCategory这段字符删除,重新访问http://localhost:8019/Account/Login?ReturnUrl=%2Fmpa,然后登录。
登录成功后,进入角色管理--编辑Admin角色,加入分类管理的权限。效果如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/08/e7644d441e3596a0301ac87d0221da4a.png)
现在访问分类管理,已经正常显示了。
2.方法加权限
到这里还没完,继续给应用层方法也加入权限。打开文件CategoryAppService.cs
【..\MyCompanyName.AbpZeroTemplate.Application\CategoryApp\CategoryAppService.cs】
分别给类和几个方法加入注解,代码如下:
[AbpAuthorize(AppPermissions.Pages_Category)] public class CategoryAppService : AbpZeroTemplateAppServiceBase, ICategoryAppService { ... [AbpAuthorize(AppPermissions.Pages_Category_Create)] public void CreateCategory(CreateCategoryInput input) ... [AbpAuthorize(AppPermissions.Pages_Category_Delete)] public void DeleteCategory(EntityRequestInput input) ... [AbpAuthorize(AppPermissions.Pages_Category_Edit)] public void UpdateCategory(CreateCategoryInput input) ...
生成Web项目,这里不给出测试方法,但记住权限一定要加上。
3.菜单加权限
最后还有一个地方要加权限,那就是菜单打开文件MpaNavigationProvider.cs
【..\MyCompanyName.AbpZeroTemplate.Web\Areas\Mpa\Startup\MpaNavigationProvider.cs】
修改分类管理菜单的代码如下:
//子菜单 PageNames.App.Common.Category, L("CategoryManager"), url:"Mpa/Category", icon: "icon-globe", requiredPermissionName: AppPermissions.Pages_Category//菜单权限,登录用户所在角色有此权限才会显示出来 ))
生成Web项目,打开角色管理--编辑Admin角色,把分类管理的权限去掉,保存,刷新页面。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/08/20cd120f12211e0b8d4fb155d9dec506.png)
会发现商店菜单已经不显示了,可能你会疑惑为什么连商店菜单都不显示呢?这是因为商店菜单只有分类管理一个子菜单,如果有多个子菜单时,商店菜单就会显示出来。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201912/08/55efda4a6336c27abbf651e259cd4508.png)
现在,整个分类管理功能终于完成。通过这个例子,我尽量通过最简单的方式去实现,不管是自己做笔记还是让他人学习,都比较易懂。
相关文章推荐
- ASP.NET Zero--12.一个例子(5)商品分类管理-编辑分类
- ASP.NET Zero--9.一个例子(2)商品分类管理-列表
- ASP.NET Zero--13.一个例子(6)商品分类管理-删除分类
- ASP.NET Zero--11.一个例子(4)商品分类管理-数据检验
- ASP.NET Zero--14.一个例子(7)商品分类管理-分类搜索及分页
- ASP.NET Zero--10.一个例子(3)商品分类管理-新建
- C# ASP.NET 通用权限管理系统组件源码中WCF例子程序服务器端运行详细配置参考
- ASP.NET MVC+LINQ开发一个图书销售站点(7):图书分类管理
- 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥
- 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥
- C# ASP.NET 通用权限管理系统组件源码中WCF例子程序客户端运行详细配置参考
- 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥
- 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥
- ASP.NET Zero--8.一个例子(1)菜单添加
- 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥
- 一步一步Asp.Net MVC系列_权限管理之权限控制
- ASP.NET MVC(模型(Model),视图(View)和控制Controller)实践:实现身份验证权限管理
- 一个更炫的动态加权限管理的导航条(Telerik.RadControls.for.ASP.NET.AJAX.v2008.Q1.SP2.Retail-SSG)
- C# ASP.NET 通用权限管理系统组件源码中WCF例子程序客户端运行详细配置参考
- C# ASP.NET 通用权限管理系统组件源码中WCF例子程序服务器端运行详细配置参考