zoukankan      html  css  js  c++  java
  • Orchard 之:Widget,兼看 Layer 在权限控制中的作用

    一:Widget

    可以理解为控件,可以直接被页面所引用。行为类似与分部页面,比如,我们可以创建一个 商品列表 Widget,然后这个 Widget 就可以被很多页面所引用。

    理解 Widget 这个概念,我们不得不理解另外两个概念:

    1:Layer

    Orchard 默认有这么几个层,Default、Authenticated、Anonymous、Disabled、TheHomepage。Layer 用于承载什么时候 Widget 将会被展现,这么讲大家一定觉得很抽象,其实 Layer 存在的意义完全在于其Rule。我们新建或者修改 Layer 的时候,就会出现 Rule,那么,Layer Rule 到底是什么,

    它是一个布尔表达式,当这个表达式的值为 true 的时候,层中的 Widget 就显式,否则不显式。

    举例来说:如果我们新建一个层,其 Rule 如果,

    填写为:(not authenticated and url("~/about")) or authenticated

    则表明:(未登录用户 且 URL 中 有 about)的可显式,或者 登录用户 可显式

    注意,authenticated 作为 orchard 这里的关键字,被程序判断为 登录用户 的意思。如果有兴趣,可寻求代码验证。全部的被 Layer rule 表达式支持的关键字如下:

    url("<url path>"):url匹配,如: url("~/home*")

    authenticated:True 如果用户登录的话.

    ContentType("<Type>"):True 如果 content type 匹配的话,如:ContentType("Page")

    not:逻辑 NOT.

    and:逻辑 AND.

    or:逻辑:OR.

    1.1 Layer 权限控制

    鉴于 Layer 的这个特性,它的一个重要的作用可被用于权限控制。如 Authenticated 这个层,其 Rule 直接为 authenticated,这样的话,就意味着,这个层里的所有东西,只有登录用户才可见的。

    2:Zone

    理解为页面上的 占位(或者叫占位符),在页面展现的时候,它被用来展现 Widget。

    image

    我们要清楚:站点Theme实际上是定义 Layer,而 Layer 则是定义哪个 Zone 可用。我们在上图中看到的这些 Zone 就是当前 Theme 的所有的 Zone。

    我们随便编辑一个 Widget,就能大致看清楚它们之间的关系了,如下:

    image

  • 相关阅读:
    如何定义自定义消息
    AfxBeginThread中使用updatedata出错
    ThinkPHP 3.2.3 简单后台模块开发(二)RBAC
    python 排序算法总结及实例详解
    python 排序算法总结及实例详解
    Excel 2016在大数据分析领域有了很多的改善
    Excel 2016在大数据分析领域有了很多的改善
    朴素贝叶斯算法的python实现方法
    朴素贝叶斯算法的python实现方法
    大数据面临的三重困难需从四个方面优化
  • 原文地址:https://www.cnblogs.com/luminji/p/3844703.html
Copyright © 2011-2022 走看看