2016-04-04 32 views
0

我已經使用MVC(基於來自nuget的Christoc.com DNN 8 MVC模塊模板)創建了一個簡單的DNN模塊,並帶有一個自定義ControlKey。此自定義ControlKey的用途是調用特定的MVC操作。對於這個例子,我將稱這個ControlKey爲「DoIt」。DNN模塊權限 - 僅限超級用戶?

所以,我定義在.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> 

模塊的視圖只包含使用NavigateURL的鏈接定製CONTROLKEY,格式化,像這樣:

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

以超級用戶帳戶登錄時,此鏈接正常工作並正確執行DoIt操作。 但是,作爲非超級用戶帳戶登錄時,即使以管理員身份登錄,我也會收到拒絕訪問消息。

我試着調整模塊和頁面的權限,(從頁面或模塊本身繼承),但我不能與非超級用戶帳戶。

我缺少什麼?我是否需要在某處設置此自定義ControlKey的權限? 有沒有辦法找出什麼權限丟失?

回答

1

我打算假設,因爲您的默認視圖的工作原理是您有一個稱爲DoIt()的操作方法以及名爲Index()(或類似的)的默認視圖操作的MVC控制器(DnnController)名稱DoItController。

嘗試使用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 = [控制鍵],[otherQS參數])

渲染HREF看起來像這樣:

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