dnn的isInRole的bug
发现dnn的判断用户是否是某个角色的方法是有bug的,一下两种方法:
DotNetNuke.Security.PortalSecurity.IsInRole("roleName")
Me.UserInfo.IsInRole("roleName")
都有同样的问题:
如果有一个属于“roleName”角色的用户,登录后,把浏览器所有页面都(ie里测试的)关闭(不要注销),然后马上再次打开,用一个不在“roleName”角色的用户登录,此用户本不应有"roleName"角色的权限,但实际情况却相反!
此情况是cookie在作怪!清空cookie,或点注销就没有此问题,分析dnn的判断用户是否是某个角色的方法,解决此问题的替代方法是:
Protected Function isInRole() As Boolean
Dim controller As DotNetNuke.Security.Roles.RoleController = New DotNetNuke.Security.Roles.RoleController
Dim Roles As String() = controller.GetRolesByUser(Me.UserInfo.UserID, PortalId)
Dim isInRole As Boolean = False
For Each strRole As String In Roles
If String.Compare(strRole, "Typists", System.StringComparison.Ordinal) = 0 Then
isInRole = True
Exit For
End If
Next
Return isInRole
End Function


浙公网安备 33010602011771号