【问题标题】:In Kentico deny access to a single page unless a use is in a particular role在 Kentico 中拒绝访问单个页面,除非用户处于特定角色
【发布时间】:2017-09-08 23:56:50
【问题描述】:

我一直在努力解决唯一限制我的 Kentico 安装中的一个页面只能由两个角色查看的问题,其他所有人都应该被重定向到一个页面,告诉他们他们需要跳过付费墙。我还没有确定最好的方法来做到这一点。在此过程中,我发现当我尝试从页面顶部的菜单访问该页面时,它通过拒绝访问来尊重我的许可。但是,当我从页面下方的可编辑 Web 部件中使用相同的链接时,它似乎忽略了权限。虽然这里看起来像两个问题,但我真正想知道的是如何拒绝访问,除非用户处于特定角色,然后如果被拒绝,我如何将他们重定向到页面以解释他们被拒绝的原因。谢谢。

【问题讨论】:

    标签: kentico


    【解决方案1】:

    试试这个:

    在您的顶级页面(母版页)中,添加“所有人”角色并授予他们读取权限。这将复制到其余页面,每个人都可以看到所有内容。是的,听起来很可疑,但请继续阅读......

    接下来导航到您要限制访问的特定页面。在“安全”选项卡上,单击“更改权限继承”链接。然后单击“中断继承并复制父权限”。接下来选择所有人角色并选中拒绝完全控制框。

    现在添加您的特定角色并将其权限设置为读取。

    这应该可以让您的权限在该页面上正常工作。

    对于特定角色的消息和重定向,您可以在页面上放置一个 Web 部件,并说明如果它们不是角色的一部分,只需使用您选择的重定向将它们重定向到页面。如果他们担任特定角色,Webpart 本身将进行处理。请记住,用户必须已经登录和/或有权访问该页面,因此该页面上没有任何限制。

    【讨论】:

      【解决方案2】:

      感谢您的所有建议。这是我发现的。首先,这两页表现不同的原因是我的大脑抽筋。我嵌入了两个不同的链接。我的错!

      其次,在安全方面,拒绝似乎优先于允许。如果角色被拒绝,任何“允许”都不会覆盖拒绝。我解决问题的方法是为我想允许访问文本的人创建一个区域,为我想拒绝的人创建一个区域或 Web 部件。在区域可见性部分(单击“可见”旁边的箭头输入文本)我输入了一个布尔语句:

      {% CurrentUser.IsInRole("会员") || CurrentUser.IsInRole("SecondRoleToTest") #%}

      这样,任何属于这两个组中的任何一个都会导致该语句的值为真,并且可见将等于真(注意“!”)。对于我想向那些不是其中任何一个成员的人展示的区域或 Web 部件,我提出了与该条件相反的情况

      {% !(CurrentUser.IsInRole("Member") || CurrentUser.IsInRole("SecondRoleToTest")) #%}

      它会显示那些不在这两个组中的人的材料。在这种情况下,文本相当于“您需要成为这个或那个,并带有指向它们如何成为这个或那个的信息的链接”。不得不承认我在这方面学到了很多。感谢您的所有帮助,您帮助我找到了答案。

      【讨论】:

        【解决方案3】:

        如果我对您的理解正确,您是说您已将一个页面锁定为只有 2 个角色?如果一个人单击不在这些角色中的导航链接,他们将被拒绝访问......对吗?但是,如果一个人单击页面上 Web 部件的链接,他们不会被拒绝访问……对吗?

        这是不寻常的地方我还想知道如何在 webpart 中设置链接?它只是一个锚链接还是您使用的是 Kentico 永久链接?这些不应该有任何不同,而只是一个想法。听起来很可能有一些权限仍然允许访问该页面,但是如果没有看到您的实际权限设置,真的很难告诉您可能是什么原因造成的。

        就重定向而言,如果您有其中一种设置(您可以在“设置”选项卡中进行设置),默认情况下它应该重定向到登录页面,否则会发生访问被拒绝。您可以很容易地编写一些自定义代码来将不属于某个角色的用户重定向到另一个页面。为了可重用性,您可以将其写入自定义 Web 部件,并为用户需要所处的角色提供一个属性,并为重定向页面位置提供一个属性,然后从那里处理它。这样做可以让您在所需的任何页面上使用相同的模式......但是您需要绕过内置的安全锁定内容。

        最后(我不知道要使用的类)您可能会覆盖在访问站点中的页面时发生“访问被拒绝”时发生的情况。然后您可以进行自己的自定义重定向。我相信其他人可以加入确切的课程。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-10-03
          • 1970-01-01
          • 1970-01-01
          • 2012-02-29
          • 2014-09-24
          • 2018-03-27
          相关资源
          最近更新 更多