J K*_*ing 4 .net dotnetnuke dotnetnuke-7
我正在为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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
所有这一切IsEditable
都告诉您是否处于编辑模式.要检查权限,请使用DotNetNuke.Security.Permissions.ModulePermissionController.CanEditModuleContent(modInfo)
.
检查当前用户以外的用户的权限是相当混乱和更脆弱的.在基本级别,您可以调用PortalSecurity.IsInRoles
并按照示例PermissionProvider
进行传递modInfo.ModulePermissions.ToString("EDIT")
.但是,"EDIT"
这是在权限提供程序中定义的值,Evoq使用不同的权限提供程序(为了提供更细化的权限),因此不同的环境可能具有您要检查的不同权限.
归档时间: |
|
查看次数: |
1617 次 |
最近记录: |