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

  • 相关阅读:
    Two strings CodeForces
    Dasha and Photos CodeForces
    Largest Beautiful Number CodeForces
    Timetable CodeForces
    Financiers Game CodeForces
    AC日记——整理药名 openjudge 1.7 15
    AC日记——大小写字母互换 openjudge 1.7 14
    AC日记——将字符串中的小写字母换成大写字母 openjudge 1.7 13
    AC日记——加密的病历单 openjudge 1.7 12
    AC日记——潜伏着 openjudge 1.7 11
  • 原文地址:https://www.cnblogs.com/luminji/p/3844703.html
Copyright © 2011-2022 走看看