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

时间:2016-04-04 12:47:22

标签: dotnetnuke

我使用MVC(基于nuget的Christoc.com DNN 8 MVC模块模板)创建了一个简单的DNN模块,带有自定义ControlKey。此自定义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>

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

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

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

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

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

1 个答案:

答案 0 :(得分:1)

我将假设你的默认视图有效,你有一个MVC控制器(DnnController)名称DoItController,其中包含一个名为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