管理员的维护功能完成后,还有权限和角色,三者构成权限系统。这里采用的RBAC是最经典、最简单的一种,权限-角色-管理员只能层层传递,并不能直接为管理员分配权限。
一 权限、角色管理
a) 权限
之前编写好了分页组件,在权限列表直接用起来了,可惜假数据只有一页
视图背后对应的Action是PermissionController.List。List方法获取分页数据,默认取第一页不用多说。
权限、角色、管理员的添加、编辑界面都比较类似。
新增、编辑、删除使用异步提交。新增、编辑的异步提交使用上一篇学到的方法,删除直接在列表界面操作,使用普通的ajax请求方式
二 权限的分配
a) 权限的分配在角色、管理员的新增和编辑界面进行
不得不说,自我感觉这套模板真是很舒服的,连勾选框的对勾都做的这么用心。但我不会用,导致权限列表过于靠左了,这块还得想办法调节一下。这块使用了BootStrap的特色布局,经过多次试验,col-sm-3最适合了,再大则会过早地触发自适应。
b) 在cshtml页面中可以自动循环来创建权限列表,通过这种html与C#代码混合的方式,生成每行三列的权限列表。但有一段@Html.Raw(@"</div><br /><div class='row'>")是因为</div>找不到匹配的标签,rzaor无法处理,需要用Raw方法来输出。这类模板引擎很强大。
c) 一个关于数据操作的问题
权限操作设计到两张中间表,权限-角色表、角色-管理员表,在写入这些表时,直接使用封装好的repository方法是不行的,比如下面的做法,会因为不在一个上下文(Context)而报错。
正确的做法是使用与roleRepository系统的上下文类,然后便开始改造,接口中增加了属性。第一次在接口中使用属性,不过属性本来就是方法,今天被逼出来了哈哈。