【问题标题】:check if user has module edit permission when page is not in edit mode当页面未处于编辑模式时检查用户是否具有模块编辑权限
【发布时间】:2013-12-27 11:05:45
【问题描述】:

我正在为 DNN 7.1+ 开发一个模块,我需要根据用户是否具有该模块的编辑权限来显示/隐藏模块中的链接。无论页面是否处于编辑模式,我都希望这种情况发生。

目前我在自定义模块页面加载事件的view.ascx中有如下代码:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    Try
        ''other code goes here.......
        If IsEditable = True Then
            AdminEdit.Visible = True
        Else
            AdminEdit.Visible = False
        End If
    Catch exc As Exception
        Exceptions.ProcessModuleLoadException(Me, exc)
    End Try

End Sub

AdminEdit 是我要隐藏的元素的 ID。此代码在页面处于编辑模式时有效,但我希望它始终可见,无论编辑模式如何,如果用户对该模块具有编辑权限。

现在,如果页面未处于编辑模式,IsEditbale 将返回 false。

问题:如何在页面不处于编辑模式的情况下检查用户权限?

编辑:我也很乐意检查用户对包含模块的页面的编辑权限

解决方案:

感谢 bdukes,这是我最终得到的结果:

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        Try

            ''display template selector if user has edit rights over module
            If DotNetNuke.Security.Permissions.ModulePermissionController.CanEditModuleContent(Me.ModuleConfiguration) Then
                AdminEdit.Visible = True
            Else
                AdminEdit.Visible = False
            End If
        Catch exc As Exception
            Exceptions.ProcessModuleLoadException(Me, exc)
        End Try

    End Sub

【问题讨论】:

    标签: .net dotnetnuke dotnetnuke-7


    【解决方案1】:

    IsEditable 所做的只是告诉您您是否处于编辑模式。要检查权限,请使用DotNetNuke.Security.Permissions.ModulePermissionController.CanEditModuleContent(modInfo)

    检查当前用户以外的用户的权限是相当麻烦和脆弱的。基本可以调用PortalSecurity.IsInRoles,按照PermissionProvider的例子传入modInfo.ModulePermissions.ToString("EDIT")。但是,"EDIT" 这里是权限提供者中定义的值,而 Evoq 使用不同的权限提供者(为了提供更细化的权限),所以不同的环境可能有不同的权限,你要检查。

    【讨论】:

    • 谢谢,我发布了我的最终代码,你介意检查一下它是否是你的意思。因为此代码发生在相关模块内部,是否有更短的获取模块信息的方法,或者我真的需要声明一个模块控制器,然后像我在解决方案中那样将模块信息分开?
    • 你应该可以通过Me.ModuleConfiguration
    • 如果我们需要检查当前用户以外的用户的权限怎么办?
    • @Ehsan,我已经编辑了我的答案来解决你的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2020-01-28
    • 1970-01-01
    • 2019-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多