【问题标题】:Securing each Content Item in Orchard CMS保护 Orchard CMS 中的每个内容项
【发布时间】:2014-04-14 06:16:33
【问题描述】:

交叉邮件:https://orchard.codeplex.com/discussions/542161

我了解您可以通过用户角色锁定/保护内容类型,但我想提供一个选项来保护每个内容项。

我的方法是创建一个自定义部件(我们称之为 SecureContentPart),它有一个布尔值(最好是编辑器/管理中的复选框)。我将把部件附加到我想提供安全选项的类型上。在部件的驱动程序中,我检查布尔值以及用户是否经过身份验证。如果用户未经身份验证(匿名)并且布尔值为真(项目已锁定),我将抛出 OrchardSecurityException 基本上将其路由到登录/未经身份验证页面。

几个问题:

  1. 首先,这是合适的方法吗?
  2. RequestContext.HttpContext.User.Identity.IsAuthenticated 是验证当前用户是否经过身份验证的最佳方法吗?
  3. 如果我在身份验证模块中定义自定义部件,而附加部件是在内容类型的相应模块中执行的(事件模块中的事件 CT),我如何知道哪个先运行? (即,如果部件位于单独的模块上,则附加部件可能会在定义部件之前发生)在 auth 模块中将部件附件定义到 Content Types 是否更合适? (想让这些尽可能解耦)

谢谢!

【问题讨论】:

    标签: authentication authorization orchardcms orchardcms-1.7


    【解决方案1】:

    Orchard 中已经有一项功能可以保护单个内容项。它叫做Content Item Permissions

    【讨论】:

    • 感谢您的快速回复!除了启用模块之外,我们还需要将 ContentPermissionsPart 附加到我们想要保护的每个内容类型,对吗?
    • 对于 imo 内容编辑器来说,编辑器视图似乎有点复杂。我了解某些情况下的角色粒度,但就我而言,理想情况下,我更喜欢一个复选框,它只锁定未经身份验证的用户的内容项。是否可以在将零件附加到每种类型时设置默认值?这样用户只需勾选“启用内容项访问控制”字段并忽略下面的复选框,除非需要进一步自定义。
    • 另外,我尝试将部件附加到内容类型(在本例中为事件)上,该内容类型显示在页面内的投影小部件上。页面允许匿名访问,但事件项不允许,但它仍然呈现页面。是否可以不渲染它,因为该投影中的事件项不允许匿名访问?
    • 与博客模块相同。如果博客文章是“安全的”,它仍会显示在博客下的博客文章列表中。如果您保护博客,则不会显示该博客的导航项。
    • 我认为只有细节视图会检查这些权限。有人谈论过用于进行修剪的权限的投影过滤器,但我不确定它是否已被编写。无论如何,我还建议将此模块作为构建您自己的更简单模块的基础。
    猜你喜欢
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多