• 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

  • 相关阅读:
    Scripts.Render 索引超出了数组界限
    AutoFac使用方法总结
    MFC中打开一个获取路径的对话框
    MFC中自定义消息
    获得窗口句柄的方法
    App Doc View Frame中指针的获取
    MFC中菜单的命令响应顺序
    机械设计软件编写心得
    对SVD奇异值分解的理解
    安装win8+Ubuntu14.04双系统的经验总结
  • 原文地址:https://www.cnblogs.com/luminji/p/3844703.html
Copyright © 2020-2023  润新知