質問

私は既存のコミュニティ バックエンドを持っており、プレゼンテーション レイヤーに Umbraco を使用するのが好きです。.Net フォーム認証を使用してログイン/ログアウトを実装するにはどうすればよいですか?(メンバー機能は使いたくないです。)さまざまなタイプのページにアクセスできるさまざまなタイプのユーザーがいます。どうすればこれを制御できますか?ユーザーコントロール?

役に立ちましたか?

解決

Umbraco は、メンバーシップ システムに ASP.NET メンバー/ロール プロバイダー モデルを使用しており、デフォルトのモデルを独自の実装に置き換えるのは非常に簡単な手順です。以前、Active Directory ストアに対してメンバーを認証したいときにこれを行ったことがありますが、カスタム データベースに対して認証することがこれほど難しいとは想像できません。

これによる利点は、Umbraco メンバーシップ システムと完全に統合され、カスタム ロール プロバイダーを使用することで、編集者が独自のセキュリティ制御を組み込む必要がなく、組み込みのページ編集機能を使用してページを制限できることです。 。

を拡張することで、単純なメンバーシップ プロバイダーを作成できるはずです。 Umbracoメンバーシッププロバイダー クラスとオーバーライド ユーザーの検証 方法。私自身はそうしたことはありませんが、他の人がそうしたことを知っています。

カスタム ロール プロバイダーに対して認証するには、次から派生したクラスを作成する必要があります。 ロールプロバイダー. 。オーバーライドする必要があるメソッドは次のとおりです。 ユーザーが役割を果たしています, ロール内のユーザーを検索, すべての役割を取得 そして ユーザーの役割を取得.

スコット・ガスリーへのリンクはこちら ブログ投稿 ここには、デフォルトのプロバイダーのソース コードなど、プロバイダー API に関する必要以上の情報が含まれています。

他のヒント

私は自分のumbracoサイト上の2つのアプローチを使用しました。両方のアプローチは、カスタムソリューションでユーザーを認証し、それぞれの資格情報をクリアする責任がありますログインおよびログアウトのためのユーザーコントロールが含まれています。私も、私が保護したい任意のドキュメントタイプに、両方のアプローチのために、umbracoMembersOnly属性を追加します。

最初のアプローチでは、私は、ユーザーがアクセスを制限されたかどうかを確認するには、個々のテンプレートのチェックを持っていました。抽象的なこのために、私は、サイト全体の利用可能だったとXSLTまたはユーザーコントロールマクロのいずれかから呼び出すことができ内容isMemberまたはisLoggedIn方法でsiteuserクラスを作成しました。このアプローチの利点は、私は、各テンプレートにカスタムメッセージを合わせるのではなく、単に同じアクセス拒否ページを提供する可能性があることです。

第二のアプローチ - 私が今好むものです - 任意のページにアクセスするためのユーザーの権利をチェックする責任がある権限のマクロを作成する場合(つまりumbracoMembersOnly属性をチェックし、セッション変数のため、trueの場合、チェック)。このマクロは、マスターテンプレートに含まれており、そのすべてのテンプレート上で実行されます。ユーザーが現在のページにアクセスする権限を持っていない場合、私は同じページになく、クエリ文字列に追加?alttemplate = RestrictedPageまたは同様にリダイレクトします。 (クエリ文字列にalttemplate = RestrictedPageのためのあなたの権限は、マクロをチェックしていることを確認し、またはあなたがリダイレクトの無限ループになってしまいます。)

あなたがチェックアウトすることができ http://osMemberControls.codeplex.comする

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top