0

我们已将 DNN 7.1.2 专业版升级到 DNN 9.0.1。升级很顺利,没有任何错误。但是,当访问升级后的网站时,页面上没有加载任何模块。同时,我想强调正在加载正确的皮肤菜单等。经过大量调试后,我能够在名为 DotNetNuke.Profession.dll 的 dll 中找到他的问题。这个 dll 有一个名为 GranularPermissionProvider 的类,它根据当前用户权限检查模块是否需要显示在页面上。罪魁祸首代码似乎如下:

GranularPermissionProvider.cs

//DotNetNuke.Professional 中的代码

public override bool CanViewModule(ModuleInfo module)
{
  if (!this.Application.HasActiveLicenseOrIsTrial)
    return base.CanViewModule(module);
  if (!PortalSecurity.IsInRoles(module.ModulePermissions.ToString("VIEW")))
    return PortalSecurity.IsInRoles(module.ModulePermissions.ToString("EDIT"));
  return true;
}

而基础PermissionProvider.cs 类中的代码如下。

/// <summary>
/// Returns a flag indicating whether the current user can view a module
/// </summary>
/// <param name="module">The page</param>
/// <returns>A flag indicating whether the user has permission</returns>

public virtual bool CanViewModule(ModuleInfo module)
{
    bool canView;
    if (module.InheritViewPermissions)
    {
        TabInfo objTab = TabController.Instance.GetTab(module.TabID, module.PortalID, false);
        canView = TabPermissionController.CanViewPage(objTab);
    }
    else
    {
       canView = PortalSecurity.IsInRoles(module.ModulePermissions.ToString(ViewModulePermissionKey));
    }
    return canView;
}

如果仔细观察,基本代码会检查模块是否继承了 GranularPermissionProvider 类中完全缺失的页面权限。我怀疑这是由于未加载哪些模块而导致的问题。我想知道是否有相同的解决方法?

4

1 回答 1

0

您是否从 DNN Professional(或 Evoq)升级到 DNN 的社区版?如果是这样,您可能还需要处理其他问题。当然,权限可能是其中之一。

您可以尝试访问“页面”管理功能。这应该向您显示所有页面的列表。您可以访问它们,并且应该能够看到已安装模块的列表,并且您应该能够在那里编辑模块权限。

您还可以安装 Oliver Hine (oliverhine.com) 的权限提供程序,它为 DNN 提供与 Evoq 中相同的功能。

只是一些想法...

于 2017-02-10T13:56:35.953 回答