DNN 模块权限 - 仅限超级用户?

DNN module permissions - superuser only?

我使用 MVC(基于来自 nuget 的 Christoc.com DNN 8 MVC 模块模板)和自定义 ControlKey 创建了一个简单的 DNN 模块。此自定义 ControlKey 的目的是调用特定的 MVC 操作。对于这个例子,我将调用此 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>

模块的视图仅包含一个 link 到自定义 ControlKey,使用 NavigateURL 格式化,如下所示:

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

当以超级用户帐户登录时,此 link 有效并正确执行 DoIt 操作。 但是,当以非超级用户帐户登录时,即使以管理员身份登录,我也会收到一条访问被拒绝的消息。

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

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

我将假设您的默认视图有效,您有一个名为 DoItController 的 MVC 控制器 (DnnController),其操作方法名为 DoIt() 以及一个名为 Index() 的默认视图操作(或类似名称) .

尝试使用 MVC Url 帮助程序 link 从默认视图 (Index.cshtml) 执行 DoIt 操作。

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

Url.Action作为参数:

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

呈现的 href 如下所示:

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