• MVC与单元测试实践之健身网站(三)-角色与权限


    管理员的维护功能完成后,还有权限和角色,三者构成权限系统。这里采用的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系统的上下文类,然后便开始改造,接口中增加了属性。第一次在接口中使用属性,不过属性本来就是方法,今天被逼出来了哈哈。

     

     

  • 相关阅读:
    docker: 定时检查docker container的运行状态并发邮件报警
    docker: 解决centos7下cgroup.procs: no such device的错误
    Redis: 改变HomeBrew安装的数据库文件目录
    MySQL: 改变Homebrew安装MySQL/MariaDB的数据库文件目录
    Node: 在Mac中离线安装Sqlite3
    通过DaoCloud发布Ghost
    Node: Updating npm's bundled node gyp
    Android Broadcast管理
    Android PackageManager packages.xml文件格式
    Android PackageManager概览
  • 原文地址:https://www.cnblogs.com/zhixin9001/p/6965152.html
Copyright © 2020-2023  润新知