建议先看看 上一篇:【自然框架】稳定版beta1——源码下载,Demo说明

下载地址:还是老地方,自然框架的源代码、Demo、数据库、配置信息管理程序下载(2010.01.25更新)

在线演示:http://demo.naturefw.com/login.aspx

权限到节点、按钮

  使用Guest账号登录后可以看到三个大功能节点、六个小功能节点, 比使用admin账号登录少了几个,这个就是权限到节点。用不到的节点是看不到的,看起来要清爽的多。

【admin账号看到的页面,左面有很多菜单,右面可以看到“添加新闻”等按钮】

【Guest账户,少了一个菜单,少了几个按钮】

  同时也是“权限过滤”,把没有权限的节点过滤掉。实现上也很简单,因为节点都是保存在数据库里的,那么只需要在提取的时候加上一个查询条件就可以了。
  FunctionID in (当前用户拥有的节点)
  这样就可以了。其他的代码都不需要考虑。

  您可能会说,如果有人直接在地址栏里面输入地址,那不就可以访问了吗?确实有这个问题,所以在做了权限过滤之后,还需要做权限验证

  在列表页面的基类里面要验证一下,验证的思路也很简单,只需要验证页面的FunctionID是否是当前用户可以访问的FunctionID即可。这样只需要在一个地方做验证,其他的列表页面可以通过继承的方式,获得权限验证的功能。也就是说子列表页面里根本就不需要考虑权限验证的问题,只需要确保FunctionID是否匹配即可。

  DataList1.aspx页面是根据FunctionID来显示内容的,FunctionID的内容一变化,呈现的内容也就跟着变了,所以DataList.aspx页面是不需要考虑FunctionID是否匹配的问题,因为他和任何一个FunctionID都是匹配的。

  需要确保匹配的列表页面,指的是哪些因为特殊需求而创建的列表页面,实现方法也很简单,只需要override一下即可。

protected override void SetFunctionID()
{
    base.FunctionID = "12345";  //特殊页面对应的FunctionID
}

  把权限验证做到最简单化。

  用news1账号进入“新闻维护”页面后,可以看到几个按钮,但是用Guest账号进入“新闻维护”页面,就只能看到“按条件查询”一个按钮了。这就是权限到按钮了,也是权限过滤,没有权限的按钮就不显示了,看着方便简洁。

【news1账户登录后看到的“新闻维护”】

  同样,只过滤是不够安全的。因为单击“添加新闻”会打开一个新页面,用这个页面来实现添加新闻的功能,那么如果在地址栏里直接输入网址呢?所以还需要在做一下验证。

  表单页面不仅要验证FunctionID,还需要验证ButtonID,这个ID是按钮的编号,代表了一个按钮,同时也表示一种操作,比如添加、修改、查看、审批。因为在一般的情况下,上面说的四种情况是可以通过一个页面来搞定的,所以就需要区分一下。

  您可能会想,这样的话,就很容易通过修改URL来绕过验证,URL的参数一改不就可以修改了吗?这个漏洞是没有的,如果您有情趣,可以下载Demo自己改一下URL试一试。

  DataForm1.aspx的验证也是在基类里面实现的。如果这个页面不能满足需求的话,需要建立单独的页面来实现,对于单独建立的表单页面还需要自行确定一下ButtonID是否匹配。代码也很简单,override一下就可以了。

  权限到记录

  这个需要用news1和news2两个账号来登录体验了。

  news1可以添加、修改、删除全部的新闻。
  News2可以添加新闻,但是只能修改、删除自己添加的新闻。

【news2登录后看到的“新闻维护”页面,只能看到自己添加的新闻】

  News1登录后看到的新闻列表是全部的新闻,而news2登录后就只能看到他自己添加的新闻了,这也算是一种权限过滤。
这里也有一个验证的问题,需要在表单页面里判断一下,当前用户是否有访问这条记录的权限。这个也是在表单基类里面实现的。

权限到列表字段

这个要用news3来体验了。

【news3账户,新闻列表里只能看到“新闻名称”、“类别”、“添加日期”,这里只是举个例子】

其余的功能留到明天晚上再发吧,白天上不了网,郁闷。

另外,如果您用news3登录,还是能看到“添加人”、“人气”的话,您可以用admin登录,到“角色管理”里面修改一下。

【修改角色,单击“设置字段”按钮】

【设置角色可以看哪些字段】

具体用法,明天会详细说明。

【自然框架】稳定版的Demo——看点二:权限,权限过滤与验证。相关推荐

  1. 【自然框架】——重开在线演示

    以前的那个在线演示的空间和域名过期了(感谢"云淡风清"和"恭敬"提供域名.空间和数据库),想想还是自己弄个空间来的稳定一些.所以买了个空间,交了一年的钱,所以至 ...

  2. 【自然框架】稳定版beta1——源码下载,Demo说明

    在线演示:http://demo.naturefw.com/ 开源协议 一直想说来着,可是总忘.开源协议采用 BSD开源协议. 一直在说开源,但只是把源码放出来了,连个开源协议都没说,虽然说了也基本等 ...

  3. 魅族16php7.3系统,魅族16X 官方Flyme7.3.0.0A稳定版 精简ROOT XP框架 纯净优化版V1.0

    特别注意:此服务仅供已经解锁过Booloader的用户使用,若未解锁Bootloader请不要购买使用! 刷机有风险,操作需谨慎! 声明: 本ROM由本人独家原创修改,禁止任何人进行二次打包修改. 本 ...

  4. flyme6 android 版本,魅族flyme6稳定版正式推送:Flyme6最好用的安卓系统,体验100分,看文说话!...

    时隔一个多月flyme 6系统终于再次更新.而在本次更新中,魅族为大部分的机型适配了全新的flyme 6稳定版. 下面小科就为大家带来最新的flyme 6体统上手体验,看看flyme 6是否真的如同魅 ...

  5. Flutter Web 支持现已进入稳定版

    作者 / Mariam Hasnany, Product Manager, Flutter 我们对 Flutter 的愿景是成为一个可移植的 UI 框架,在全平台上构建精美的应用体验.做为 Flutt ...

  6. android6.0重力工具箱,重力工具箱 GravityBox For Android8.0/8.1(Oreo)稳定版发布!

    作为功能最强大的Xposed框架模块之一,重力工具箱 GravityBox的更新适配一直也是最积极的,本次发布的8.x专用版本也算是比较及时,每一个大的Android版本,重力工具箱基本都会有一个专门 ...

  7. linux 内核4.12,Linux Kernel 4.12 发布,最新的稳定版内核

    原标题:Linux Kernel 4.12 发布,最新的稳定版内核 来源:开源中国社区 www.oschina.net/news/86412/linux-kernel-4-12 Linux Kerne ...

  8. 它来了!IntelliJ IDEA 2020.1 稳定版发布

    作者:局长 https://www.oschina.net/news/114775 IntelliJ IDEA 2020.1 稳定版来了!这是今年发布的首个重大更新版本,新版本增加了对 Java 14 ...

  9. 腾讯云推出首款自研服务器星星海;苹果新款Mac Pro整套配齐超30万;Fedora 31稳定版发布|极客头条...

    快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「CSDN 极客头条」,是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道.风里雨里,我们将每天为朋友们,播报最新鲜有 ...

最新文章

  1. 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码
  2. 【APIO2016】Fireworks【闵可夫斯基和】【凸包向量和】【可并堆】
  3. ZOJ1101-赌徒【二分查找】
  4. 业务实时监控服务ARMS推出小程序监控支持各种小程序
  5. Git时出现“error: 源引用表达式 main 没有匹配 error: 推送一些引用到 ‘https://github.com/***.git‘ 失败”的错误提示
  6. CSDN 创始人蒋涛:拥抱中国开源技术生态发展黄金十年
  7. 十大震撼谷歌地图卫星照
  8. 读JavaScript权威指南(第六版)笔记(第二章)
  9. centos7查看mysql日志_centos 7 mysql启动失败–学会看错误日志
  10. 用DSA或者RSA进行加密或者数字签名
  11. 2018农行--软开
  12. ubuntu防火墙安装arm架构说明
  13. 微信小程序开发实战第六讲之手机号验证码登录
  14. 如何新建一个css到html,新建一个css样式
  15. 计算机理论参考文献,计算机理论英文参考文献 计算机理论论文参考文献哪里找...
  16. Unity3D连接本地或局域网MySQL数据库
  17. download.php是什么文件,qmdownload是什么文件?
  18. 墙裂推荐 Anaconda | 安利 Python IDE
  19. hive的分区和分桶
  20. bcs转10 c语言,ARM汇编转C语言 - ARM技术论坛-ARM嵌入式论坛-人气最火爆ARM学习论坛 - 21ic电子技术开发论坛...

热门文章

  1. kubernetes 1.8 高可用安装(一)
  2. Linux基金会网络策略副总裁Marc Cohn:OPEN-O遍及网络,尽享服务
  3. 硬件常见问题及排错思路。
  4. 设计模式(十五):Iterator迭代器模式 -- 行为型模式
  5. 解决multiple definition of的方法
  6. jconsole工具使用----jvm内存泄漏问题
  7. 搜索页面scroll下拉时候进行刷新,显示更多搜索值
  8. ASP.NET Web API WebHost宿主环境中管道、路由
  9. 自定义弹出框控件制作及示例
  10. Android用户界面开发(11):Menu