0

流暢な API を使用して、Sitefinity cms システムで開発されたコントロールのデフォルト ページを作成しようとしています。

ページの作成は、その特定のコントロールのインストーラ部分にあります。installer.csインストール後にページの作成が 1 回だけ行われるように、コードを追加しました。しかし、システムはページの作成を許可していません。その前の認証部分のため(私の推測)。ページは何らかのユーザー名によって所有されている必要があるためです。

だから私は認証のためにいくつかのセキュリティ情報を渡そうとしました。以下はコードです

UserLoggingReason result = SecurityManager.AuthenticateUser("Default", "username","password", true);

しかし、上記の行は常に null 参照例外をスローします。その中で何をする必要があるかわかりません。

4

1 に答える 1

1

コードは、installer.cs ではなく、module.cs ファイルにある必要があります。Install メソッドに次の呼び出しがあることがわかります。

this.InstallBackendPages(initializer);

そこで、次のようにページを作成できます。

Guid groupPageId = Guid.NewGuid();
        Guid pageId = Guid.NewGuid();

        initializer.Installer
            .CreateModuleGroupPage(groupPageId, "EmptyCustomModule1 group page")
                .PlaceUnder(SiteInitializer.SitefinityNodeId)
                .SetOrdinal(100)
                .LocalizeUsing<AvalonNotificationsResources>()
                .SetTitle("Avalon")
                .SetUrlName("avalon")
                .ShowInNavigation()
                .AddChildPage(pageId, "Test Page")
                    .SetOrdinal(1)
                    .LocalizeUsing<AvalonNotificationsResources>()
                    .SetTitle("Test Page")
                    .SetUrlName("test-page")
                    .AddUserControl("~/UserControls/TestWidget.ascx", "Content")
                    .AddControl(new System.Web.UI.WebControls.Literal()
                     {
                         Text = "<h1 class=\"sfBreadCrumb\">Test Widget</h1>",
                         Mode = System.Web.UI.WebControls.LiteralMode.PassThrough
                     })
                    .ShowInNavigation()
                .Done()
            .Done();

これは、管理者がモジュールをアクティブにして [インストール] をクリックしたときにのみ Install メソッドが呼び出されるため、ユーザー資格情報を提供しなくても確実に機能します。これは、既に管理者権限で実行されていることを意味します。

于 2016-03-11T02:21:07.523 に答える