【问题标题】:DNN module permissions - superuser only?DNN 模块权限 - 仅限超级用户?
【发布时间】:2016-04-04 12:47:21
【问题描述】:

我使用 MVC(基于来自 nuget 的 Christoc.com DNN 8 MVC 模块模板)创建了一个简单的 DNN 模块,并带有一个自定义的 ControlKey。此自定义 ControlKey 的目的是调用特定的 MVC Action。对于这个例子,我将把这个 ControlKey 称为“DoIt”。

所以,我在 .dnn 文件中定义了 ControlKey:

<moduleControl>
    <controlKey>DoIt</controlKey>
    <controlSrc>MyApp.Modules.TestModule.Controllers/DoIt/DoIt.mvc</controlSrc>
    <supportsPartialRendering>False</supportsPartialRendering>
    <controlTitle>DoIt</controlTitle>
    <controlType>View</controlType>
    <iconFile />
    <helpUrl />
    <viewOrder>0</viewOrder>
    <supportsPopUps>True</supportsPopUps>
</moduleControl>

模块的视图只包含一个指向自定义 ControlKey 的链接,使用 NavigateURL 格式化,如下所示:

http://dnndev.me/TestPage/tabid/89/ctl/DoIt//mid/450/Default.aspx

当作为超级用户帐户登录时,此链接可以正常工作并正确执行 DoIt 操作。 但是,当以非超级用户帐户登录时,即使以管理员身份登录,我也会收到拒绝访问消息。

我尝试调整模块和页面权限(从页面继承或在模块本身),但我无法使用非超级用户帐户进行调整。

我错过了什么?我是否需要在某处设置此自定义 ControlKey 的权限? 有没有办法找出缺少的权限?

【问题讨论】:

    标签: dotnetnuke


    【解决方案1】:

    我将假设由于您的默认视图有效,因此您有一个名为 DoItController 的 MVC 控制器 (DnnController),它具有一个名为 DoIt() 的操作方法以及一个名为 Index() 的默认视图操作(或类似的东西)。

    尝试使用 MVC Url 帮助器从您的默认视图 (Index.cshtml) 链接到您的 DoIt 操作。

    <a href="@Url.Action("DoIt", "DoIt", new {ctl = "DoIt", itemId = item.ItemId})">Do It!</a>
    

    Url.Action 作为参数:

    • 动作名称(即:DoIt)
    • 控制器名称(即:DoIt)
    • routeValues(即:ctl=[Control Key], [otherQS args])

    渲染的 href 如下所示:

    http://801.dnndev.me/TestPage/ctl/DoIt/mid/437/controller/DoIt/action/DoIt

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-20
      • 2013-04-06
      • 2021-02-03
      • 1970-01-01
      • 1970-01-01
      • 2015-09-01
      相关资源
      最近更新 更多