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
我使用 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